下面的简短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
答案 0 :(得分:18)
这是第一个被认为是目录
的参数的全局在bash脚本中,文件的参数将作为$0
(脚本名称)传递到脚本中,然后$1
,$2
,$3
。要访问所有这些文件,您可以使用其标签,也可以使用其中一个组构造。对于群组构建,有$*
和$@
。 ($*
将所有参数视为一个块,其中$@
认为它们由$IFS
分隔
答案 1 :(得分:4)
$1
表示第一个参数
for file in $1/*
表示循环,变量file
具有第一个参数中指定的目录中每个文件的名称值。
答案 2 :(得分:2)
$ 1是第一个命令行参数。如果你运行./asdf.sh a b c d e,那么$ 1将是a,$ 2将是b等。在带有函数的shell中,$ 1可以作为第一个函数参数,依此类推。