如何运行 /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
非隐藏文件名,尽管在没有's glob 限定符或's运算符的 bash 中,您希望该 glob 不扩展到没有匹配时的文字。/tmp
.sh
zsh
(N)
ksh93
~(N)
shopt -s nullglob
/tmp/*.sh