gpt4 book ai didi

regex - BASH - If else, 正则表达式, OR

转载 作者:行者123 更新时间:2023-11-29 09:12:13 25 4
gpt4 key购买 nike

我的 bash 脚本应该检查用户是否输入了两个数字。每个数字前应有 +- 符号。第一个数字应为四位数字,第二个数字应为五位数字。

无论我输入什么值,输出总是Fail

运行脚本的命令行语句:

$me add +1234 -12345

脚本:

#!/bin/bash
#Script name add
if [ $1 != [\+\-][0-9][0-9][0-9][0-9] ] ||
[ $2 != [\+\-][0-9][0-9][0-9][0-9][0-9] ]
then
echo Fail
else
echo Success
fi

最佳答案

POSIX 风格的测试 ([) 根本不执行模式匹配。 != 运算符是一个字符串比较。 ksh 样式测试 ([[)) 使用 == 运算符执行与常规 shell 模式的模式匹配,以及与 =~ 的 ERE 匹配。 (没有!=~,但是我们可以DeMorganify)

! [[ $1 =~ [-+][[:digit:]]{4} && $2 =~ [-+][[:digit:]]{5} ]]

要在 POSIX sh 中执行模式匹配,唯一的选择是 case 语句。

关于regex - BASH - If else, 正则表达式, OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com