Подтвердить что ты не робот

Как проверить, пуст ли строка в оболочке script?

У меня есть оболочка script, как это:

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

Теперь мне нужно проверить, содержит ли строка какой-либо символ без пробелов ([\n\t]), а если нет, пропустите его. Как я могу это сделать?

4b9b3361

Ответ 1

Так как read читает поля с разделителями с пробелами по умолчанию, строка, содержащая только пробелы, должна привести к тому, что пустая строка будет назначена переменной, поэтому вы должны пропустить пустые строки с помощью только:

[ -z "$line" ] && continue

Ответ 2

попробуйте это

while read line;
do 

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

done < $SOURCE_FILE

Ответ 3

bash:

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

И используйте done < file вместо cat file | while, если вы не знаете, почему вы использовали последний.

Ответ 4

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

Ответ 5

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"

Ответ 6

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