2012-01-08 20 views
5

Aşağıdaki kısa bash betiği, verilen dizindeki ve alt dizinindeki tüm dosya ve dizinleri listeler. Komutta $1/* ne anlama geliyor? Lütfen bana bu konuda bazı referanslar verin. Teşekkür

#!/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 

cevap

18

Bir dizinde bash komut olarak

bir dosyaya argümanlar (script adı olan) $0 olarak komut iletilmeden olarak kabul birinci tartışmanın glob, ardından $1, $2 var , $3 ... Hepsine erişmek için onların etiketini kullanın ya da grup yapılarından birini kullanın. Grup yapıları için $* ve [email protected] vardır.

5

$1 ilk parametre anlamına gelir ($*[email protected] olarak onları $IFS tarafından sınırlanan gördüğü bir blok olarak argümanlar dikkate).
, file değişkeniyle ilk parametrede belirtilen dizindeki her dosyanın ismine sahip olan döngü anlamına gelir.

2

$ 1, ilk komut satırı bağımsız değişkeni. ./asdf.sh dosyasını çalıştırırsanız, $ 1 olacaktır, $ 2 olacaktır b, vb. İşlevleri olan kabuklarda, $ 1, ilk işlev parametresi olarak işlev görebilir, vb.

İlgili konular