linux - shell當前目錄




$ @在shell腳本中的含義是什麼? (4)

一個美元符號後面跟著一個at-sign( @ )在shell腳本中的含義是什麼?

例如:

umbrella_corp_options [email protected]

從手冊:

@

從一個開始擴展到位置參數。 當擴展出現在雙引號內時,每個參數都會擴展為單獨的單詞。 也就是說,“$ @”相當於“$ 1”“$ 2”....如果雙引號擴展出現在一個單詞內,則第一個參數的擴展與原始單詞的開始部分相連,最後一個參數的擴展與原始單詞的最後部分結合在一起。 當沒有位置參數時,“$ @”和$ @展開為空(即,它們被移除)。


[email protected]是傳遞給腳本的所有參數。

例如,如果您調用./someScript.sh foo bar那麼[email protected]將等於foo bar

如果你這樣做:

./someScript.sh foo bar

然後在someScript.sh參考中:

umbrella_corp_options "[email protected]"

這將被傳遞給umbrella_corp_options ,每個單獨的參數用雙引號括起來,允許從調用者獲取空白參數並傳遞它們。


在大多數情況下,純粹的[email protected]的用法意味著“盡可能地傷害程序員”,因為在大多數情況下,它會導致單詞分隔以及參數中的空格和其他字符的問題。

在(猜測的)99%的情況下,需要將它放在""[email protected]"可用於可靠地迭代參數。

for a in "[email protected]"; do something_with "$a"; done

這些是命令行參數,其中:

[email protected] =將所有參數存儲在一個字符串列表中
$* =將所有參數存儲為單個字符串
$# =存儲參數的數量





sh