2012-09-19 10 views
11

ファイル内の行をループしています。私は "#"で始まる行をスキップするだけです。 どうすればいいですか?bashループはコメント行をスキップします

#!/bin/sh 

while read line; do 
    if ["$line doesn't start with #"];then 
    echo "line"; 
    fi 
done < /tmp/myfile 

ありがとうございました!

率直

答えて

15
while read line; do 
    case "$line" in \#*) continue ;; esac 
    ... 
done < /tmp/my/input 

、しかし、grepに回すために、多くの場合、明確である:またexpr`または接尾辞除去(例えば、 `[$ {」-z`とあまりにも巧妙な何かを行うことができ

grep -v '^#' < /tmp/myfile | { while read line; ...; done; } 
+0

%%#*} "]')しかし、これは 'case'オプションと同等かそれ以下の読みやすさであると私は思います。 – pilcrow

+2

空白(唯一)が '#'に先行する行を削除するには、代わりに 'grep -v '^ \ s *#' mklement0

+1

別のオプション(何らかの理由で誰かが 'grep'を避けたい場合)は' [$ line =〜^#]]でもかまいません。次に続行します。 fi'。 –

関連する問題