gpt4 book ai didi

linux - Shell 编程变量不会进入 if 或 case 语句

转载 作者:太空宇宙 更新时间:2023-11-04 09:55:06 25 4
gpt4 key购买 nike

我已经尝试过 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 版本)。从 echo 标题行我得到了我所期望的:'细胞''频率''废话'

这些发生在一个循环中,没有可能导致测试失败的空格。

但它仍然打印 fail fail fail fail。

有谁知道是什么导致了这种奇怪的行为?我上下检查了值,找不到任何原因。帮助将不胜感激。

最佳答案

语法错误:您不需要单引号:

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)

关于linux - Shell 编程变量不会进入 if 或 case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com