2012-01-08 46 views
5

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

回答

18

它看作是一个目录

在bash脚本参数文件传递到脚本为$0(这是脚本的名称)的第一个参数的水珠,然后$1$2$3 ...要访问所有人,请使用他们的标签,或者使用组构造之一。对于组构造有$*[email protected]。 ($*考虑所有的参数作为一个块,其中作为[email protected]认为它们通过$IFS分隔)

5

$1装置的第一个参数。
for file in $1/*意味着循环变量file具有在第一个参数中命名的目录中每个文件的名称的值。

2

$ 1是第一个命令行参数。如果运行./asdf.sh a b c d e,那么$ 1将是a,$ 2将是b等。在带有函数的shell中,$ 1可以作为第一个函数参数,等等。

相关问题