Bash 有=~
正则表达式匹配运算符。这里是一个使用它的示例:
#!/bin/bash
input=$1
if [[ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]]
# ^ NOTE: Quoting not necessary, as of version 3.2 of Bash.
# NNN-NN-NNNN (where each N is a digit).
then
echo "Social Security number."
# Process SSN.
else
echo "Not a Social Security number!"
# Or, ask for corrected input.
fi
对于否定,我见过的所有例子都依赖于一个else
子句。对于我所处的情况仅有的对否定匹配感兴趣,是否有更好的方法来制作非功能性if
子句?
例如,如果我只关心上述输入的情况不是a 不是社会安全号码,正确的方法是什么?
答案1
您可以在顶层进行否定:
if ! [[ …