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