順次無限ループでbashスクリプトを実行するには?

順次無限ループでbashスクリプトを実行するには?

/tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh を実行してから /tmp/1.sh を再度繰り返すにはどうすればよいですか?無限に繰り返すのが最善です。

答え1

forループ内でループを使用してくださいwhile true

while true; do
  for script in /tmp/{1..4}.sh; do
    "$script"
  done
done

true、、、、、を含む操作を実行せずに成功したコマンドを使用できますが、これ((1))は最も明白です。[[ x ]]printf ''eval:true

Cスタイルを使用することもできます。

for ((;;)) {
  for script in /tmp/{1..4}.sh; do
    "$script"
  done
}

/tmp/{1..4}.sh(元のzshの非標準構文)は、/tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.shリストを表現する方法です。 cshスタイルまたは/tmp/{1,2,3,4}.shを使用することもできます/tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh。 globbing withを使用して、語彙順で終わるすべての隠しファイル名に拡張することもできます/tmp/*.sh。ただし、 bash では ' glob 修飾子や ' 演算子がないと glob が Text に拡張されないことを望みます。一致するものはありません。/tmp.shzsh(N)ksh93~(N)shopt -s nullglob/tmp/*.sh

関連情報