未預期的符號`then附近有語法錯誤:行:`then`if[-f$i];then未預期的符號`done附近有語法錯誤#!/bin/bashcd/var/logsum=0for...
未預期的符號 `then' 附近有語法錯誤: 行 : `then'` if [ -f $i ];then'未預期的符號 `doneMORcNjlsTx' 附近有語法錯誤
#!/bin/bash cd /var/log sum=0 www.newsfordelhi.comfor i in `ls -r *` do if [ -f $i ];then let sum++ echo "文件名:$i" fi done echo "總文件數量為:$sum"
上面的代碼看起來是一點問題都沒有,但是一旦復制粘貼到linux里面運行就會出現各種奇奇怪怪的問題,如下:
test.sh: 行 6: 未預期的符號 `then' 附近有語法錯誤
test.sh: 行 6: ` if [ -f $i ];then'
test.sh: 行 10: 未預期的符號 `done' 附近有語法錯誤
test.sh: 行 10: `done'
上面的錯誤信息著實是把我給整蒙了,還好我還是相信計算機的嚴謹,認真看了一下報錯信息,發現都是then 或者 done的前面出現了一個反引號,非常奇怪,明明我們就沒寫過反引號進去。
查找了不少資料,最后查到MORcNjlsTx是Wphpindows和linux系統的環境不一樣導致的,解決方式非常簡單粗暴,就是在linux里面刪除對應的代碼重新一個一個敲就好,還有另一個方法是用notepaphpd++里面設置linux環境,這個請讀者自行驗證。
下面看看我的解決過程:
出現如下錯誤
把then那行dd刪除,整行重新輸入,出現新的錯誤,如下:
把done那行刪除,發現沒用,還是報錯,想到done是在一行起始處(并且反引號在done前面),有理由懷疑是上一行的原因,把上一行刪掉重寫(就是 fi),成功通過,如下:
上面只要用sudo運行即可
綜上,找了好久都沒找到原因,因為代碼本來就是對的,只是我懶,直接copy進linux里面運行(誰知道會不兼容呢),所以還是得一個一個敲的穩妥。
到此這篇關于shell編程時出現:未預期的符號 `then' 附近有語法錯誤 或者 : 行 : `then'的文章就介紹到這了,更多相關shell未預期的符號 `then' 附近有語法錯誤內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!
如果認為本文對您有所幫助請贊助本站