Я пробовал как с if-elif-else, так и с case easc. Я не знаю, почему он не принимает условие, когда оно должно быть правдой.
cat temp | (while read line
do
heading=${line%% *}
echo "'$heading'"
case $heading in
'Cell')
echo 'hit cell'
echo $line | awk "{printf '%-20s %15s', $5, `./get.sh $5`}";;
'Frequency')
echo 'hit frequency'
echo $line | awk "{gsub('\)', '', $5);printf '%6s', $5 }";;
'blah')
echo 'hit blah'
echo $line | awk "{gsub('\"', '', $0);printf '%40s', $1 }";;
*) echo 'fail';;
esac
done)
Я не понимаю, почему он не проходит кейс-тест (или вариант if-elif этого). От заголовка эха я получаю именно то, что ожидаю:
'Cell'
«Частота»
'Бла'
Это происходит в цикле, и нет пробелов, которые могли бы вызвать сбой теста.
Но он по-прежнему печатает сбои сбои сбои сбои.
Кто-нибудь знает, что может вызвать это странное поведение? Я проверил значения вверх и вниз и не могу найти причину. Помощь будет оценена.