2009-08-07 3 views
3

ケースインポイント。私はいくつかのファイルのセットが最初の行 '------'としてあるかどうかを知りたいです。[[]]のBash ==演算子がスマートすぎます!

ので、

for file in *.txt 
do 
    if [[ `head -1 "$file"` == "------" ]] 
    then 
     echo "$file starts with dashes" 
    fi 
done 

事は頭が改行でコンテンツを返しますが、「------」改行を持っていない、です。

どうしてですか?

+0

@Vinko、私はちょうど男の頭をしましたが、コンテンツを表示している間に改行の使用については言及しませんでした –

+0

ファイルの最初のN *行*と改行で定義された行完全な行は、その改行が含まれています –

答えて

6

バックティックは、末尾の改行を取り除きます。例えば:その最初のエコーが改行に続く "バー" をプリントアウトしていても

foo=`echo bar` 
echo "<$foo>" 

プリント

<bar> 

+0

まあ、これも! :-) –

+0

実際、これだけです。私の質問は間違っています:( –

+2

関連BASHマニュアル引用: "コマンドを実行してコマンド置換をコマンドの標準出力に置き換え、末尾に改行を削除して拡張を実行します。 –

0

bashはコマンド置換の結果に単語分割を行い、即ちhead -1 "$file"

単語分割は、とりわけ改行を削除します。