Чтобы найти, сделало ли поле 5, я использую:
[[ -z ` echo $LINE | awk '{print $5}' ` ]]
мой вопрос, если существует другой изящный способ проверить, является ли поле 5 нулем?
СПАСИБО Yael
После length5=$(echo $LINE | awk '{ print length($5)}')
переменная $lenght5
будет содержать длину поля 5;
Примечание: в Вашей строке в качестве примера, если бы ttt были пусты, yyy был бы полем 5, так был бы осторожен: можно использовать
awk -F' '
вместо awk
сделать пространство разделителем полей, так, чтобы 2 пробелов = пустое поле....
Это передаст, если 5-е поле будет строкой 0
(и не будет, если это будет 00
, 0.0
, или это отсутствует и т.д.).
#!/bin/bash
LINE="123 aaa ddd ggg 0 yyy hhh"
if [[ "0" = `echo ${LINE} | awk '{print $5}'` ]]
then
echo "5th field is string '0'"
else
echo "5th field isn't string '0'"
fi
Это делает то, что Вы хотите?
Было бы полезно при обеспечении большего количества входа в качестве примера.