whileループで最後のコマンドを使用する方法は?

whileループで最後のコマンドを使用する方法は?

このコードを修正する方法を知りたいです。

ls
while [ 1 > 0 ]
do
fc -s
sleep 1
done

については、fc -s以下を参照してください。この問題もっと学ぶ。

私の質問は次のとおりです。

  1. どのように動作しますか?名前を付けるとtest.sh
  2. fc -s最初の行を表現するにはlsどうすればよいですか?つまり、走ってlsからしばらく寝て、lsしばらく寝てみたいと思います。lsもちろん、他のコマンドで配置することもできます。

答え1

あなたが望むものを正確に実行するwatchコマンドを使用するのはどうですか?マニュアルにはこう書かれています。

watch - 定期的にプログラムを実行し、出力を全画面表示します。

毎秒このコマンドを実行します。

watch -n 1 command

答え2

次のことを試すことができます。

 $ cat script.sh
 while sleep 1
 do
     eval "$@"
 done
 $ ls
 $ sh script.sh !!

スクリプトは渡されたコマンドを引き続き実行します。!!最後のコマンドが計算されます。


コマンドをスクリプトの一部にし、複数の場所に入力したくない場合は、次のようにします。

 $ cat script.sh
 cmd=ls
 while sleep 1
 do
     eval "$cmd"
 done
 $ sh script.sh

関連情報