2012-01-08 47 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可以作爲第一個函數參數,等等。

相關問題