1 美元意味著......?沒有任何輸入?

1 美元意味著......?沒有任何輸入?

我有一個以這一行開頭的程式。這是什麼意思?由於美元符號,我在谷歌搜尋時遇到麻煩。

為什麼 $1 沒有任何參數?這裡的 -d 是什麼意思?

  if [ -d $1 ]; then

即使 if 條件甚至沒有開始,分號也會出現嗎?我認為分號只出現在語句末尾或條件末尾,例如

   if () {  };

答案1

分號是必需的,因為如果沒有指示上下文在哪裡結束(透過分號、換行符等),則if無法知道條件在哪裡結束以及條件區塊在哪裡開始。比較:

$ if echo then foo then; then :; fi
then foo then
$ if echo then; then :; fi
then

-d是檢查下一個參數是否為目錄的測試。來自help test(因為test相當於[):

-d FILE        True if file is a directory.

例如:

$ mkdir foo
$ if [ -d foo ]; then
>     echo foo is a dir
> fi
foo is a dir

$1是傳遞給程式的第一個參數。例如:

$ cat > script << 'EOF'
> #!/bin/sh  
> echo "$1"
> EOF
$ chmod +x script
$ ./script foo
foo

順便說一句,您應該$1在此處引用,因為否則它可以擴展為多個參數,從而導致語法錯誤[

$ dir="foo bar"
$ [ -d $dir ]
sh: 2: [: foo: unexpected operator
$ [ -d "$dir" ]
$ 

相關內容