私はマシンにsshします。送信コマンドを実行します。これらすべての出力を変数にキャプチャしたい。
私は試した
output=$(send "rpm -i mypkg.rpm\r")
しかし、うまくいきません。何か案が?
エラーメッセージ
")": no such variablean't read "(send ""rpm -i mypkg.rpm
while executing
"output=$(send "rpm -i mypkg.rpm\r")"
user000001で既に述べたように、スペース文字の後=
には bash では機能しません。これは、bash がパラメーターを含むコマンドとして解釈するためです。
しかし、ssh セッション内でコマンド出力をキャプチャするポイントは何ですか? ほとんどの場合、クライアント マシンから取得する必要があるため、コードは次のとおりです。
output=$(ssh myhost 'rpm -i mypkg.rpm')
このように実行すると、一部のプログラムが異常終了します。これは、ターミナルがないためです。-t
flag を ssh で使用すると、疑似 tty の割り当てを強制できます。
"output=$(send "rpm -i mypkg.rpm\r")"
-ここでの問題はあなたの引用です。さまざまな種類の引用符を組み合わせることで、これを解決できます。例えば:
"output=$(send 'rpm -i mypkg.rpm\r')"