為什么在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
提交
取消