回答
從here:當報價參數被打破了正常,如果有空格的
$ @的行爲就像$ *除了。
拿這個腳本,例如(從鏈接的回答):
for var in "[email protected]"
do
echo "$var"
done
給出了這樣的:
$ sh test.sh 1 2 '3 4'
1
2
3 4
現在改變"[email protected]"
到$*
:
for var in $*
do
echo "$var"
done
而且你得到這個:
$ sh test.sh 1 2 '3 4'
1
2
3
4
'「$ *」'有另一個有趣的屬性。每個參數都由值「$ IFS」而不是空格分隔。 – 2010-05-03 23:29:02
解釋替換最終如何擴展(之後的命令是什麼樣的)以及爲什麼導致不同的結果可能是值得的。 – 2010-05-03 23:56:39
以$ @每一個參數是一個帶引號的字符串(通過使用Google已答覆中找到)。否則它的行爲相同。
參見:http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
「是引用的字符串」?這意味着使用'「$ @」'首先生成一個帶引號的字符串,然後在決定如何運行下一個命令時,shell解析它。更準確地說,'$ *'完成的字符串連接會被跳過,而'$ *'在未加引號時使用的字符串分割也會被跳過。因此,使用'「$ @」'不僅通常更加正確,而且對於shell來說解釋也更少。 – 2012-05-07 23:01:56
...順便說一句,引用IRC中的'!abs'://irc.freenode.org/#bash - 除非您知道如何過濾掉垃圾,否則應該避免臭名昭着的「高級」Bash腳本指南。它會教你編寫錯誤,而不是腳本。有鑑於此,BashGuide寫成:http://mywiki.wooledge.org/BashGuide – 2012-05-07 23:05:27
從我的POV一個關鍵不同的是, 「$ @」 保存參數的原號碼 。這是只有形式。出於這個原因,它是 非常方便的腳本傳遞參數。
例如,如果文件my_script包含:
#!/bin/bash
main()
{
echo 'MAIN sees ' $# ' args'
}
main $*
main [email protected]
main "$*"
main "[email protected]"
### end ###
,我運行它是這樣的:
my_script 'a b c' d e
我會得到這樣的輸出:
主要看到5個ARGS
MAIN看到5個參數
主要看1個ARGS
主要看3個ARGS
- 1. shell腳本中的$ {varname}和$ varname有什麼區別
- 2. shell腳本中的$ @和$ *有什麼區別?
- 3. 之間有什麼區別。和``在shell腳本中操作
- 4. Javascript和ECMA腳本有什麼區別?
- 5. 標記,編碼,腳本,shell腳本和編程語言有什麼區別?
- 6. JavaScript shell - 有什麼區別
- 7. 'Operating System'和'Command Shell'有什麼區別?
- 8. 在另一個shell腳本中調用shell腳本的區別
- 9. Perl中的子程序和腳本有什麼區別?
- 10. 腳本標籤中的「lang」和「type」屬性有什麼區別?
- 11. Illustrator中的腳本和插件有什麼區別?
- 12. bash腳本中的'exec cmd&'和'cmd&'有什麼區別?
- 13. GAS中的腳本和自定義函數有什麼區別?
- 14. MATLAB中的腳本和函數有什麼區別?
- 15. 有什麼區別:。!和:r!?
- 16. 從shell調用腳本和使用system()之間有什麼區別?
- 17. Shell腳本:「本地foo」和「本地foo =」有區別嗎?
- 18. =和==有什麼區別?
- 19. 這個腳本中int和Integer有什麼區別?
- 20. eclipse中運行php腳本和php網頁有什麼區別?
- 21. 有什麼區別`和$(Bash中有什麼區別?
- 22. Linux上的腳本shell和solaris上的腳本shell之間的區別
- 23. R中的Sys.getenv('PATH')和shell(「PATH」)有什麼區別
- 24. linux shell中的東西和`something`有什麼區別?
- 25. Windows註冊表中的Shell和ShellEx有什麼區別?
- 26. OpenCL中本地和全局內存區別有什麼區別?
- 27. Ctrl-C和SIGINT有什麼區別?
- 28. 這兩個用來運行shell腳本的命令有什麼區別?
- 29. 工會和文本有什麼區別?
- 30. spark-submit和pyspark有什麼區別?
的可能重複[什麼 「$ @」 和 「$ *」 在bash有何區別?(http://stackoverflow.com/questions/3008695 /在bash之間有什麼區別) – Daenyth 2012-05-08 01:02:13