2012-02-13 47 views
0

所以我有這塊代碼。基本上,我將文件$ i,檢查它是否有內容,檢查是否可以讀取它,如果我可以打開它,抓住第一行,看看它是否是bash文件。當我每次在非空文件上運行它時,它都被記錄爲真和echo的bash。BASH:比較字符串,一個來自文件,一個來自我的程序,如果語句總是爲真

  ## File is empty or not 
      if [[ -s $i ]] 
      then 
       ## Can we read the file 
       if [[ -r $i ]] 
       then 
        ## File has content 
        if [[ $(head -n 1 $i) = "#! /bin/bash" ]] 
        then 
         echo -n " bash" 
        fi 
       fi 
      else 
       ## file does not have content 
       echo -n " empty" 
      fi 

這是什麼呢,如果它的bash的檢查:

if [[ $(head -n 1 $i) = "#! /bin/bash" ]] 

回答

0

更換[[[和引號$(head -n 1 $i)

[[本身就是一個測試其內容的操作符。

+0

@Snow_Mac奇怪的是,當我在下面發佈的代碼完全匹配你的代碼時,奇怪的工作。真的想知道爲什麼。 – Timeout 2012-02-13 00:27:08

+0

@ b1naryj您是否嘗試過錯誤的情況(也就是說,當文件不是以「#test」開頭時)? – 2012-02-13 00:32:05

+0

@'Adam Liss'是的,它也有效。找不到任何問題。我在OSX 10.7上,也許解釋器略有不同。 – Timeout 2012-02-13 00:51:29

相關問題