“$ 1 / *”在“for file in $ 1 / *”中的含义是什么

时间:2012-01-08 13:41:03

标签: linux bash shell

下面的简短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

3 个答案:

答案 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可以作为第一个函数参数,依此类推。