2012-09-19 93 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

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

你也可以做一些與'expr'或後綴去除(例如,'[-z「$ {太聰明行%%#*}「]'),但我認爲這些可能會比'case'選項同樣或更少。 – pilcrow

+2

也可以使用'grep -v'^ \ s *#' mklement0

+1

如果[[$ line =〜^#]];則另一個選項(如果某人想要避免使用'grep')可能是'然後繼續; fi'。 –