如何测试shell脚本中的行是否为空?

时间:2010-04-05 11:33:26

标签: bash shell sh

我有一个像这样的shell脚本:

cat file | while read line
do
    # run some commands using $line    
done

现在我需要检查该行是否包含任何非空格字符([\ n \ t \ t]),如果不包含,则跳过它。 我怎么能这样做?

6 个答案:

答案 0 :(得分:62)

由于read默认情况下读取空格分隔的字段,因此仅包含空格的行应该会将空字符串分配给变量,因此您应该只能跳过空行:

[ -z "$line" ] && continue

答案 1 :(得分:9)

试试这个

while read line;
do 

    if [ "$line" != "" ]; then
        # Do something here
    fi

done < $SOURCE_FILE

答案 2 :(得分:5)

击:

if [[ ! $line =~ [^[:space:]] ]] ; then
  continue
fi

并使用done < file代替cat file | while,除非您知道为什么要使用后者。

答案 3 :(得分:2)

if ! grep -q '[^[:space:]]' ; then
  continue
fi

答案 4 :(得分:2)

cat如果你在读取循环中使用,我在这种情况下无用。我不确定你是否想要跳过空的行,或者你想跳过也至少包含空格的行。

i=0
while read -r line
do
  ((i++)) # or $(echo $i+1|bc) with sh
  case "$line" in
    "") echo "blank line at line: $i ";;
    *" "*) echo "line with blanks at $i";;
    *[[:blank:]]*) echo "line with blanks at $i";;
  esac
done <"file"

答案 5 :(得分:0)

blank=`tail -1 <file-location>`
if [ -z "$blank"  ]
then
echo "end of the line is the blank line"
else
echo "their is something in last line"
fi