父外壳(一个调用)为您
bash show_files.sh *扩展了外壳
*。
在脚本中,您需要使用:
for dir in "$@"do echo "$dir"done
双引号确保正确处理文件名中的多个空格等。
可能令人困惑的附录
如果您确实确定要扩展该脚本
*,则必须确保将
*其传递给脚本(如其他答案中所述,用引号引起来),然后确保在正确的位置将其扩展在处理中(这不是小事)。那时,我将使用数组。
names=( $@ )for file in "${names[@]}"do echo "$file"done我经常
$@不使用双引号,但这是一次或多或少正确的事情。棘手的是它不能很好地处理带有空格的通配符。
考虑:
$ > "double space.c"$ > "double space.h"$ echo double space.?double space.c double space.h$
很好 但是,请尝试将其作为通配符传递给脚本,并且…好吧,我们只是说那一点变得棘手。
如果要
$2单独提取,则可以使用:
names=( $1 )for file in "${names[@]}"do echo "$file"done# ... use $2 ...


