/tmp/cmd
SSHを使用してリモートコンピュータ(slc05bkt)からローカルファイル(ここ)を実行しようとしています。以下は、スクリプトファイルで試したコマンドです。
cmd="ssh -v ssuthari@slc05bkt \"bash -l -s\" < /tmp/cmd"
$cmd
次の例外が発生します。
ksh: line 1: /tmp/cmd: cannot open [No such file or directory]
このローカルファイルのコピーを同じ場所にあるリモートシステムに追加した後でも、エラーが発生します。
ksh: line 1: bash -l -s: not found
皮肉なことに、コマンドラインから直接コマンドを実行できますが、スクリプトでは上記の行を実行できません。誰でもこの問題を解決するのに役立ちますか?
答え1
$cmd
変数は評価されずに拡張され、文字列としてシェルに渡されるため、エラーが発生します。あなたの場合は試してみてくださいeval "$cmd"
。
とにかく悪い習慣なので、代わりに$(ssh the_rest_of_your_command_line)
使用することをお勧めします。eval "$cmd"
eval