gpt4 book ai didi

linux - 将 [[ ]] 命令转换为测试表达式格式

转载 作者:太空狗 更新时间:2023-10-29 12:41:19 26 4
gpt4 key购买 nike

假设您让用户输入数字 0-3 并想要对其进行测试。最常见的方式似乎是:

[[ $var =~ ^[0-3]$ ]]

但是您将如何使用它:

test expression

我最初的尝试没有正确评估,例如

read -p "Enter selection [0-3] > "
if test $REPLY == '^[0-3]$' ; then
...

它只是将 if 语句评估为 false。

最佳答案

test 等同于[ ] 结构,但不等同于[[ ]],它是一个扩展版本。正则表达式 =~ 仅在扩展测试中可用,因此对于简单的 test[ ] 您必须从其他地方提取正则表达式评估。

一个修复方法是 grep。此管道将捕获并打印匹配项:

echo "$REPLY" | grep '^[0-3]$'

如果字符串不为空,则对字符串使用 test 会得到肯定的评估。比较这两个:

test "" && echo ok

test "a" && echo ok

知道了这一点,现在可以很容易地从这两个元素构建一个复合测试。

test "$(echo "$REPLY" | grep '^[0-3]$')"

这可以应用于脚本:

read -p "Enter selection [0-3] > "
if test "$(echo "$REPLY" | grep '^[0-3]$')"; then
...
fi

关于linux - 将 [[ ]] 命令转换为测试表达式格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038074/

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