晚上好, 我想编写一个脚本来说明它的参数是否是数字,但是我得到了这个:
a: 4: Syntax error: "(" unexpected (expecting ")")
一开始我尝试这样:
#!/bin/bash case "$1" in 0x* ) echo hex ;; ''|*[!0-9]*) echo dec ;; * ) echo wtf ;; esac
后来我发现了这一点:
if ! [[ "$yournumber" =~ ^[0-9]+$ ]] ; then exec >&2; echo "error: Not a number"; exit 1 fi
好吧,这些都不起作用,我寻求帮助!
最佳答案
我不确定 *[!0-9]*
是什么意思,但以下内容似乎对我有用。
#!/bin/bash
shopt -s extglob
case "$1" in
'')
echo missing ;;
0x+([0-9a-fA-F]))
echo hex ;;
+([0-9]))
echo dec ;;
*)
echo wtf ;;
esac
请注意,extglob
让我可以使用更复杂的模式匹配来查找“十六进制”和“十进制”数字。您可以在 bash man page 中找到相关信息。 .
关于bash - Shell 是可变数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273621/