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

use*_*370 0 linux bash scripting

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

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

hek*_*mgl 6

它们按字母顺序排序.从bash手册:

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

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


che*_*ner 6

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

for f in ./*; do
    "$f"
done
Run Code Online (Sandbox Code Playgroud)

该模式将生成按字母顺序排序的脚本列表,其中"按字母顺序"由您当前的语言环境定义.

你的尝试:

 ./*
Run Code Online (Sandbox Code Playgroud)

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