<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike>
<strike id="5ntnv"></strike><ruby id="5ntnv"></ruby><del id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></del><strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<span id="5ntnv"><dl id="5ntnv"></dl></span>
<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike><th id="5ntnv"><noframes id="5ntnv"><span id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></span>
<span id="5ntnv"></span>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike><strike id="5ntnv"><i id="5ntnv"></i></strike><span id="5ntnv"></span>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<th id="5ntnv"><noframes id="5ntnv">
<ruby id="5ntnv"></ruby>
<strike id="5ntnv"><dl id="5ntnv"></dl></strike>

貴州網站建設公司貴州網站建設公司

shell script中的syntax error near unexpected token `then' 問題

其實這是一個shell下判斷符號 [ ] 加空格的問題,一定要小心

編寫《鳥哥》給的示例程序時,運行時出現:syntax error near unexpected token `then'

[root@localhost scripts]# vi sh06-02.sh
[root@localhost scripts]# ./sh06-02.sh
Please input(Y/N): Y
./sh06-02.sh: line 8: syntax error near unexpected token `then'
./sh06-02.sh: line 8: `if[ "$yn" == "Y" ] || [ "$yn" == "y" ]; then'

打開腳本文件如下:

shell script中的<strong></strong>syntax error near unexpected token `then' 問題 _ JavaClub全棧架構師技術筆記

發現then和fi不匹配,紅底白字高亮的意思就是此處可能有錯?,

上網搜索,原來if和中括號[]之間也需要空格鍵隔開,修改后vim語法就不報錯了,如下:

shell script中的syntax error near unexpected token `then' 問題 _ JavaClub全棧架構師技術筆記


關于判斷符號[ ],也就是中括號,下面引自鳥哥的解釋:

除了我們很喜歡使用的 test 之外,其實,我們還可以利用判斷符號『 [ ] 』(就是中括號啦) 來進行數據的判斷呢!舉例來說,如果我想要知道 $HOME 這個變量是否為空的,可以這樣做:

[root@www ~]# [ -z "$HOME" ] ; echo $?

使用中括號必須要特別注意,因為中括號用在很多地方,包括萬用字節與正規表示法等等,所以如果要在 bash 的語法當中使用中括號作為 shell 的判斷式時,必須要注意中括號的兩端需要有空白字節來分隔喔!假設我空白鍵使用『□』符號來表示,那么,在這些地方你都需要有空白鍵:

[  "$HOME"  ==  "$MAIL"  ][□"$HOME"□==□"$MAIL"□] ↑       ↑  ↑       ↑

其實if與[]之間也是需要空格鍵隔開的

上面的例子在說明,兩個字串 $HOME 與 $MAIL 是否相同的意思,相當於 test $HOME = $MAIL 的意思啦!而如果沒有空白分隔,例如 [$HOME==$MAIL] 時,我們的 bash 就會顯示錯誤信息了!這可要很注意啊!所以說,你最好要注意:

  • 在中括號 [] 內的每個組件都需要有空白鍵來分隔;
  • 在中括號內的變量,最好都以雙引號括號起來;
  • 在中括號內的常數,最好都以單或雙引號括號起來。


網絡上志同道合,我們一起學習網絡安全,一起進步,QQ群:694839022

作者:SEC.VIP_網絡安全服務
來源鏈接:https://www.cnblogs.com/cnsec/p/3789786.html

贊(4196)
未經允許不得轉載:>貴州網站建設公司 » shell script中的syntax error near unexpected token `then' 問題
国产欧美精品