外壳编程变量不会进入 if 或 case 语句



我已经尝试过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)

相关内容

  • 没有找到相关文章

最新更新