在linux中使用*命令运行文件

时间:2014-01-27 16:23:18

标签: linux bash scripting

假设我希望在目录中运行所有脚本。如果我这样做./*.sh,它们将以哪个顺序运行?

目录: 1.sh 2.sh 3.sh

2 个答案:

答案 0 :(得分:6)

它们按字母顺序排序。来自bash manual

  

分词后,除非设置了-f选项(参见Set Builtin),Bash会扫描每个单词中的字符'*','?'和'['。如果出现其中一个字符,则该单词将被视为模式,并替换为与该模式匹配的按字母顺序排列的文件名列表。

但是,为了按照您的预期运行它们,您需要阅读@chepners 回答(谢谢!,我必须承认我不会指望)

答案 1 :(得分:6)

要运行所有脚本,必须单独运行它们:

for f in ./*; do
    "$f"
done

该模式将生成按字母顺序排序的脚本列表,其中“按字母顺序”由您当前的区域设置定义。

您的尝试:

 ./*

将扩展为匹配文件列表,然后shell将其视为单个命令。将执行第一个脚本,其余的脚本名称作为参数传递给第一个脚本。