このコマンドを実行しています。
ar=($( ssh -i id_rsa -T -y [email protected] sh -c "id;whoami;ps aux"))
ps aux
実行された各コマンドの出力を配列に保存して配列を呼び出す必要がありますが、配列呼び出し時に目的の結果や他のコマンドを取得することはできません。
echo ${ar[2]}
ps auxの最初の行が表示されます。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
完全な結果ではなくps aux
ベストアンサー1
試してみてください(bash4.4+)
readarray -td '' a < <(
ssh -i id_rsa -T -y [email protected] '
id; printf "\0"
whoami; printf "\0"
ps aux; printf "\0"'
)
id_output=${a[0]}
whoami_output=${a[1]}
ps_output=${a[2]}
ssh
root
コマンドラインを解釈するためにシェル(このユーザーのログインシェル)が呼び出されました。これを行うには、パラメータをリンクします。したがって、メソッドで実行されるのはおよび引数の-c
あるシェルであり、そのシェルは、およびをsh -c id;whoami;ps aux
実行します。ここでは重複して混乱を引き起こすだけです。sh -c id
whoami
ps aux
sh -c
配列要素には、末尾の改行を含む各コマンドの完全な出力が含まれます。
印刷するには、次を使用します。
printf %s "$id_output"
改行を削除するには、次のようにします。
id_output=${id_output%$'\n'}