2012-02-13 12 views
0

私はこのコードブロックを持っています。基本的には、ファイル$ iを取り出して内容があるかどうかをチェックし、読み込めるかどうかをチェックし、開くことができれば最初の行を取得し、bashファイルかどうかを調べます。毎回これを空でないファイルで実行すると、真とエコーのbashとして登録されました。BASH:ファイルからの文字列、プログラムからの文字列の比較、ifステートメントは常に真です

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

答えて

0

[[[を交換し、引用符で$(head -n 1 $i)を囲む:

  ## 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のだ場合のチェックを行うものです。

[[は、その内容をテストする演算子です。

+0

@Snow_Mac奇妙なのは、私があなたのものと正確に一致する下記のコードを投稿したときに働いたことです。なぜ本当に知りたいのですか? – Timeout

+0

@ b1naryj偽の場合(つまり、ファイルが "#test"で始まっていない)試しましたか? –

+0

@ 'アダム・リス'はい、それも働いた。それに間違ったものは見つかりませんでした。私はOSX 10.7を使用していますが、おそらくインタープリタは少し異なります。 – Timeout