开发者

How can I test if line is empty in shell script?

开发者 https://www.devze.com 2022-12-25 11:52 出处:网络
I have a shell script like this: cat file | while read line do # run some commands using $line done Now I need to ch开发者_JS百科eck if the line contains any non-whitespace character ([\\n\\t ]),

I have a shell script like this:

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

Now I need to ch开发者_JS百科eck if the line contains any non-whitespace character ([\n\t ]), and if not, skip it. How can I do this?


Since read reads whitespace-delimited fields by default, a line containing only whitespace should result in the empty string being assigned to the variable, so you should be able to skip empty lines with just:

[ -z "$line" ] && continue


try this

while read line;
do 

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

done < $SOURCE_FILE


bash:

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

And use done < file instead of cat file | while, unless you know why you'd use the latter.


cat i useless in this case if you are using while read loop. I am not sure if you meant you want to skip lines that is empty or if you want to skip lines that also contain at least a white space.

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"


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


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


awk 'NF' file | while read line
do
    # run some commands using $line    
done

stole this answer to a similar question: Delete empty lines using sed

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号