Unix 壳球型故障

Unix 壳球型故障,unix,sh,glob,Unix,Sh,Glob,我正试图打印出与输入相对应的输出。输入将是一个数字,输出将以英语打印出数字。我在unix中遇到语法/正则表达式方面的问题。如果我用277的输入运行这个程序,那么只有“100”作为输出。应该是“120”的地方。有什么问题吗。。?我到处都找过了,似乎是对的 我知道它还没有完成,但它困扰着我。有什么建议吗 case "$1" in 1[0-9][0-9]) # 100's echo one-hundred if [ "$1" == 12[0-9] ] then

我正试图打印出与输入相对应的输出。输入将是一个数字,输出将以英语打印出数字。我在unix中遇到语法/正则表达式方面的问题。如果我用277的输入运行这个程序,那么只有“100”作为输出。应该是“120”的地方。有什么问题吗。。?我到处都找过了,似乎是对的

我知道它还没有完成,但它困扰着我。有什么建议吗

case "$1" in
1[0-9][0-9]) # 100's
    echo one-hundred
    if [ "$1" == 12[0-9] ]
    then
        echo twenty
    fi
;;

regex语法是
=~
而不是
=
,因此您的if需要是
[“$1”=~12[0-9]]
,尽管并非每个shell都支持该语法如您所见,
case
命令将其模式全局化。
test
命令(也称为
[
)没有。看起来您可能正在使用性能较差的shell,
echo$shell
告诉您什么?@msw It show/bin/bash然后@EricRenouf的答案对您有效。我对
12[0-9]中的空格感到困惑
但我面前没有真正的计算机。最初的问题不是你需要使用
=~
,而是
[…]
中的
=
不支持模式匹配。
[$1=12[0-9]]]
[$1=~12[0-9]]
。但是,两者略有不同;模式锚定在两端,而正则表达式不是。模式
12[0-9]
相当于正则表达式
^12[0-9]$