God of Money Asked: 2023-03-06 13:31:07 +0800 CST2023-03-06 13:31:07 +0800 CST 2023-03-06 13:31:07 +0800 CST 如何按顺序和无限循环运行 bash 脚本? 772 如何运行 /tmp/1.sh /tmp/2.sh /tmp/3.sh /tmp/4.sh 然后循环返回以再次运行 /tmp/1.sh?最好在无限循环中 bash 1 个回答 Voted Best Answer Stéphane Chazelas 2023-03-06T14:08:09+08:002023-03-06T14:08:09+08:00 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非隐藏文件名,尽管在没有's glob 限定符或's运算符的 bash 中,您希望该 glob 不扩展为没有匹配项时的文字。/tmp.shzsh(N)ksh93~(N)shopt -s nullglob/tmp/*.sh
for
在循环中使用循环while true
。您可以使用任何成功的命令而不执行任何操作来代替
true
包括((1))
,[[ x ]]
,printf ''
,eval
,:
,尽管true
这是最明显的。你也可以使用 C 风格:
/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
非隐藏文件名,尽管在没有's glob 限定符或's运算符的 bash 中,您希望该 glob 不扩展为没有匹配项时的文字。/tmp
.sh
zsh
(N)
ksh93
~(N)
shopt -s nullglob
/tmp/*.sh