編寫shell時需要注意空格

       以下這是一段簡單的LINUX SHELL代碼,功能是用於查找當前目錄及其所有目錄中,哪些文件中包括了"html"這四個字符,並將該文件名給打印出來,咋一看這段代碼應該是沒有問題的,但是實際上卻存在着兩個問題,先看下面的代碼吧:

#!/bin/sh
for afile in `find ./ -name "*"`; do
        #echo $afile;
 if [ -f "$afile" ]; then
  wordnum = `cat $afile|grep html|wc -l`;
  if [$wordnum -gt 0]; then
   echo $afile;
  fi
 fi
done


1、第一個問題是賦值語句不能夠在變更與值之間有空格,如上面的這一句:

    wordnum = `cat $afile|grep html|wc -l`;
    如果這樣寫,是肯定會報錯誤的,必須要寫成以下這樣:

    wordnum=`cat $afile|grep html|wc -l`;

   

    2、第二個問題是if語句的方括號與判斷條件之間一定要是兩邊都有空格,如這條語句:

    if [$wordnum>0]; then
    是有問題的,必須寫成下面這樣:

    if [ $wordnum -gt 0 ]; then

 

    所以,以下SHELL正確的寫法應該是如下的:

    #!/bin/sh  
    for afile in `find ./ -name "*"`; do  
            #echo $afile;  
        if [ -f "$afile" ]; then  
            wordnum=`cat $afile|grep html|wc -l`;  
            if [ $wordnum>0 ]; then  
                echo $afile;  
            fi  
        fi  
    done  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章