Как я могу проверить, пуста ли строка в скрипте shell?
У меня есть скрипт вроде этого:
cat file | while read line
do
# run some commands using $line
done
теперь мне нужно проверить, содержит ли строка какой-либо символ без пробелов ([nt ]), а если нет, пропустите его. Как я могу это сделать?
5 ответов
С read
читает поля, разделенные пробелами по умолчанию, строка, содержащая только пробелы, должна привести к назначению пустой строки переменной, поэтому вы должны иметь возможность пропускать пустые строки только с помощью:
[ -z "$line" ] && continue
попробуй такое
while read line;
do
if [ "$line" != "" ]; then
# Do something here
fi
done < $SOURCE_FILE
Баш:
if [[ ! $line =~ [^[:space:]] ]] ; then
continue
fi
и использовать done < file
вместо cat file | while
, Если вы не знаете, почему вы используете последний.
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"