為什么在Bash中'['之前'''之后會有一個空格?我試圖編寫一個使用if語句的Bash腳本。if [$CHOICE -eq 1];劇本是給我的錯誤,直到我后得到的空間[和之前]如下所示:if [ $CHOICE -eq 1 ];我的問題是,為什么方括號周圍的空間在Bash中如此重要?
4 回答
子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
一旦你掌握了這[是一個命令,一大堆就會變得更加清晰!
[是拼寫“ test”的另一種方式。
help [
然而,雖然它們完全相同,但test結果卻有了更詳細的幫助頁面。校驗
help test
...欲獲得更多信息。
此外請注意,我是按意圖使用,help test而不是man test。這是因為test和[有殼內置命令時下。他們的功能設置會有所不同/bin/test,并/bin/[Coreutils的這是在描述的命令man頁。
Smart貓小萌
TA貢獻1911條經驗 獲得超7個贊
一點歷史:這是因為'['在歷史上不是shell內置的,而是一個單獨的可執行文件,它接收expresson作為參數并返回結果。如果你沒有用空格包圍'[',那么shell會在$ PATH中搜索不同的文件名(而不是找到它)。- Andrew Medico 09年6月24日在1:13
一只名叫tom的貓
TA貢獻1906條經驗 獲得超3個贊
[是一個命令,$CHOICE應該是一個參數,但通過執行[$CHOICE([和之間沒有任何空格$CHOICE),您正在嘗試運行一個名為的命令[$CHOICE。命令的語法是:
command arguments separated with space
添加回答
舉報
0/150
提交
取消
