これは私にとってきちんとしていません:
SCRIPT="cd /tmp/sample/; ls"
cmd="ssh -l $USERNAME $HOST $SCRIPT"
このようにローカル コマンドとリモート コマンドを混在させると、誤解を招くことがあります。
bash を使用できる場合は、配列を使用することをお勧めします。
SCRIPT="cd /tmp/sample/; ls"
CMD=(ssh -l "$USERNAME" "$HOST" "$SCRIPT")
OUTPUT=$("${CMD[@]}")
echo "$OUTPUT"
必要に応じて、代わりに出力を行の配列として保存できます。
SCRIPT="cd /tmp/sample/; ls"
CMD=(ssh -l "$USERNAME" "$HOST" "$SCRIPT")
readarray -t OUTPUT < <("${CMD[@]}")
for A in "${OUTPUT[@]}"; do
echo "$A"
done
追加の注意:ls
出力に応じて、ファイルを行ごとに入力する必要があるかどうかを検出するのに十分賢明ですが、そうでないバージョンもあります。その場合はオプション-1
を追加してください。