假设我希望在目录中运行所有脚本。如果我这样做./*.sh,它们将以哪个顺序运行?
目录: 1.sh 2.sh 3.sh
答案 0 :(得分:6)
它们按字母顺序排序。来自bash manual:
分词后,除非设置了-f选项(参见Set Builtin),Bash会扫描每个单词中的字符'*','?'和'['。如果出现其中一个字符,则该单词将被视为模式,并替换为与该模式匹配的按字母顺序排列的文件名列表。
但是,为了按照您的预期运行它们,您需要阅读@chepners 回答(谢谢!,我必须承认我不会指望)
答案 1 :(得分:6)
要运行所有脚本,必须单独运行它们:
for f in ./*; do
"$f"
done
该模式将生成按字母顺序排序的脚本列表,其中“按字母顺序”由您当前的区域设置定义。
您的尝试:
./*
将扩展为匹配文件列表,然后shell将其视为单个命令。将执行第一个脚本,其余的脚本名称作为参数传递给第一个脚本。