這是我在代碼中出錯時偶然發現的(忘記了$(())哈哈),所以我已經修復了我的愚蠢錯誤,但是為什么$1*$2會給你一個腳本所在目錄中的檔案和檔案夾串列呢?
這是一個例子:
腳本.sh:
echo $1*$2
$ bash script.sh
random.bmp script.sh some text document.odt test file.txt test folder
如果只是直接發出命令,也會發生同樣的事情:
$ echo $1*$2
random.bmp script.sh some text document.odt test file.txt test folder
有誰知道它為什么會這樣?該功能的任何地方是否有任何檔案?我短暫地環顧四周,但沒有發現其他人對此感到困惑。
uj5u.com熱心網友回復:
球體
“Glob”是一組匹配或擴展特定型別模式的 Bash 功能的通用名稱。通配符的一些同義詞(取決于它出現的背景關系)是模式匹配、模式擴展、檔案名擴展等。glob 可能看起來像
*.txt,當用于匹配檔案名時,有時稱為“通配符”。傳統的 shell glob 使用非常簡單的語法,它的表現力不如RegularExpression。glob 中的大多數字符都是按字面處理的,但 a
*匹配 0 個或多個字符,a?匹配一個字符,并[...]匹配指定集合中的任何單個字符(請參閱下面的范圍)。所有 glob 都隱式錨定在開始和結束處。
-- glob - Greg 的維基
官方檔案:檔案名擴展(Bash 參考手冊)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496502.html
上一篇:用于提取日志檔案中兩個不同時間戳之間的行的Bash腳本
下一篇:在Bash命令上使用sed
