次のコマンドを実行しようとすると:
for x in $(seq 10); do echo $($x >> c.txt); done
次のエラーが発生します。
-bash: 1: command not found
ベストアンサー1
これを確認した後にシェルが行うことは、echo $($x >> c.txt)
コマンド置換を最初に処理することです$($x >> c.txt)
。これはコマンドの出力に置き換えられます$x >> c.txt
。これはループの最初の反復$x
で1
、対応するコマンドがないため、エラーが発生します。 (1〜10の範囲の整数に対応するコマンドがないと、ループを繰り返すたびにエラーが発生します。出力の問題が切り捨てられる可能性があります)
次のようなことをしたいかもしれません。
for x in $(seq 10); do
echo "$x" >>c.txt
done
(コマンドの代用なし)または単に
seq 10 >>c.txt
これは同じ効果があります。