コマンドを変数に保存しcmd
、次の文を使用してコマンドの出力を取得します。
echo `$cmd`
改行がないことを除いて、すべてがうまく機能しますls -l
。
答え1
コマンドを文字列変数に保存した場合、それを実行するには次のものが必要です。
eval "$cmd"
$cmd
これは、コマンドにスペースを除くシェル特殊文字が含まれていない場合にのみ機能します。通常、文字列変数にコマンドを保存することはお勧めできません。関数を定義する方が良いです。
cmd () {
ls -l
}
その後、実行できますcmd
。
最も即時の問題は、引用符なしでコマンド置換を使用するため、コマンド出力がさらに破損することです。変数とコマンドの置換には二重引用符を使用する必要があります。cmd
関数として定義されます。
echo "`cmd`"
複雑なコマンドでパニックにならないようにするには、バックティックの代わりにドル括弧を使用してください。
echo "$(cmd)"
バラよりスペースやその他の特殊文字が原因でシェルスクリプトが停止するのはなぜですか?説明のために。