我正在做一个基本的脚本,询问用户关于他/她的一些细节。事实是,如果用户没有输入年龄(数字),脚本会用一条消息警告,我想设置条件。我知道以某种方式放置了类似的东西:
如果 [ $age != [0-9] ]
但它不起作用。
有什么建议吗?
泰。
选择你最喜欢的:所有这些都需要使用双括号条件结构
# is not all digits, regular expression
if [[ ! $age =~ ^[0-9]+$ ]]; ...
# contains a non-digit, regular expression
if [[ $age =~ [^0-9] ]]; ...
# contains a non-digit, glob pattern
if [[ $age == *[^0-9]* ]]; ...
# is not all digits, extended glob pattern
if [[ $age != +([0-9]) ]]; ...
Run Code Online (Sandbox Code Playgroud)
在所有这些方法中,0-9都可以替换为 POSIX 字符类[:digit:]
if [[ $age == *[^[:digit:]]* ]]; ...
Run Code Online (Sandbox Code Playgroud)
文件:
Glenn 已经涵盖了 bash-only 的答案。甚至/bin/sh可以使用的 POSIX 方式是使用case而不是if:
case $age in
*[!0-9]*) echo "Age must not contain non-numeric digits";;
esac
Run Code Online (Sandbox Code Playgroud)