【发布时间】:2020-01-09 11:50:18
【问题描述】:
我有 2 个值,项目和标签。我需要检查它们是否为空/null,以及项目是否只有字符('-' 除外)以及标签是否只有数字(期望 '.')。
用户实际上是颠倒了它们的顺序,首先是项目,然后是标签。
如果用户顺序错误,我会尝试反转 $project 和 $tag 的正则表达式...但是什么也没有发生,没有错误并且代码继续。
if [ -z $project ] ||
[ -z $tag ] ||
[[ $project =~ '/^[0-9]+(\.[0-9]+)*$/' ]] ||
[[ $tag =~ '/^[A-Za-z]+(\-[A-Za-z]+)*$/' ]] ; then
echo Project or tag wrong, please try again. &&
echo Example: file.sh project-test 1.99.2
fi
这段代码没有给我错误,但也没有做我需要的。我在这里做错了什么?
---- 更新答案
我的语法错误,现在可以正常使用(不带引号)。
if [[ $project =~ ^[0-9]+(\.[0-9]+)*$ ]] &&
[[ $tag =~ ^[A-Za-z]+(\-[A-Za-z]+)*$ ]] ; then
echo Correct
else
echo Project or tag wrong, please try again. &&
echo Example: file.sh project-test 1.99.2
fi
【问题讨论】:
标签: regex shell if-statement scripting