我尝试过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版本)。从回波标题线我得到的正是我所期望的: '细胞' '频率' '嗒嗒'
这些发生在一个循环中,并且没有可能导致测试失败的空格。
但它仍会打印失败失败失败失败。
有谁知道什么可能导致这种奇怪的行为?我上下检查了值,找不到任何理由。帮助将不胜感激。
答案 0 :(得分:2)
语法错误:您不需要单引号:
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)