bash 端末で次のコマンドを実行すると正常に動作します。
$ bash -c "python -c \"print 'helloworld'\""
--->こんにちは世界
ただし、sshを介してこれを実行しようとすると、結果はありません。誰でもこの問題について教えてもらえますか?
$ ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""
-->何も
答え1
ssh [email protected] "$(cat <<'EOT'
bash -c "python -c \"print 'helloworld'\""
EOT
)"
このような複数の組み込みコマンドの参照悪夢を避けるのに役立つ単純な機能/ユーティリティに関するアイデアがあります。見続けてください ;-)
答え2
あなたはそれを間違って引用しました。注文
ssh [email protected] "bash -c \"python -c \"print 'helloworld'\"\""
リモート側で実行します。
bash -c "python -c "print 'helloworld'""
これは次のとおりです。
bash -c "python -c print" 'helloworld'
実行してpython -c print
空白行を印刷します。 (注:helloworld
次のような動作これ.)
正しく引用するにはバックスラッシュが必要です。これ:
ssh [email protected] "bash -c \"python -c \\\"print 'helloworld'\\\"\""
リモート側で次のコマンドを実行します。
bash -c "python -c \"print 'helloworld'\""
これがまさにあなたが望むものです。
確認するスーパーユーザーに関する質問。同様の状況で役立つように設計されています。
bash -c
まったく不要な可能性があります。このコードはローカルシェルで実行する必要があります。
python -c "print 'helloworld'"
だからこれはうまくいくかもしれません:
ssh [email protected] "python -c \"print 'helloworld'\""
それはおそらく、SSHサーバーがmeeeeが選択したシェルをログインシェルとして使用してコマンドを実行するからです。特別な場合にはpython -c
正しく機能しない可能性があります。ただし、実行されると予想されるため、bash -c
実行も実行する必要があります。python -c