編寫shell時需要注意空格

來源:互聯網
上載者:User

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

#!/bin/shfor 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 fidone

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  
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.