[英]What does “$1/*” mean in “for file in $1/*”
下面的简短bash脚本列出了给定目录及其子目录中的所有文件和目录。 脚本中$1/*
含义是什么? 请给我一些关于它的参考。 谢谢
#!/bin/sh
list_alldir(){
for file in $1/*
do
if [ -d $file ]; then
echo $file
list_alldir $file
else
echo $file
fi
done
}
if [ $# -gt 0 ]; then
list_alldir "$1"
else
list_alldir "."
fi
它是被视为目录的第一个参数的glob
在bash脚本中,文件的参数以$0
(脚本名称)的形式传递给脚本,然后$1
, $2
, $3
...要访问所有这些参数,您可以使用它们的标签,也可以使用其中一个组构造。 对于组构造,有$*
和$@
。 ( $*
将所有参数视为一个块,其中$@
认为它们由$IFS
分隔)
$1
表示第一个参数。
for file in $1/*
的file
表示使用变量file
循环,该变量file
具有第一个参数中指定的目录中每个文件的名称值。
$ 1是第一个命令行参数。 如果运行./asdf.sh abcde,那么$ 1将是a,$ 2将是b等。在具有函数的shell中,$ 1可以作为第一个函数参数,依此类推。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.