Unix 壳球型故障
我正试图打印出与输入相对应的输出。输入将是一个数字,输出将以英语打印出数字。我在unix中遇到语法/正则表达式方面的问题。如果我用277的输入运行这个程序,那么只有“100”作为输出。应该是“120”的地方。有什么问题吗。。?我到处都找过了,似乎是对的 我知道它还没有完成,但它困扰着我。有什么建议吗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
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]$
。