BASH:比较字符串,一个来自文件,一个来自我的程序,如果语句总是为真

问题描述:

所以我有这块代码。基本上,我将文件$ 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" ]] 

更换[[[和引号$(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