Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 应为条件二进制运算符:`$1';附近出现语法错误;_Bash_Shell - Fatal编程技术网

Bash 应为条件二进制运算符:`$1';附近出现语法错误;

Bash 应为条件二进制运算符:`$1';附近出现语法错误;,bash,shell,Bash,Shell,我正在尝试运行简单的代码块。 它在第四行给出的错误是“靠近“$1”的语法错误” =~表示匹配正则表达式 如何将“$1”变量与此运算符一起使用 这是我的密码: if [[ $1 -gt 3 ]] && [[ $1 -lt 7 ]] then echo "$1 is between 3 and 7" elif [[ $1 =~ "Jeff"]] || [[ $1 =~ "Roger" ]] || [[ $1 =~ "Brian" ]] then echo "$1 works in t

我正在尝试运行简单的代码块。 它在第四行给出的错误是“靠近“$1”的语法错误”

=~表示匹配正则表达式

如何将“$1”变量与此运算符一起使用

这是我的密码:

if [[ $1 -gt 3 ]] && [[ $1 -lt 7 ]]
then
echo "$1 is between 3 and 7"
elif [[ $1 =~ "Jeff"]] || [[ $1 =~ "Roger" ]] || [[ $1 =~ "Brian" ]]
then
echo "$1 works in the Data Science Lab"
else
echo "You entered: $1, not what I was looking for.."
fi

真的很有趣。您在该行中键入的第一个条件是
[[$1=~“Jeff”]
,因此在
“Jeff”
]
之间没有空格,bash将它们解释为单个字符串,这显然不是您的模式,整个解析失败,行结构崩溃。如果添加该空间:

if [[ $1 =~ "Jeff" ]] || [[ $1 =~ "Roger" ]] || [[ $1 =~ "Brian" ]]

然后它工作了。。。看起来…

如果你使用的是正则表达式,那么各种字符串可以组合成一个正则表达式,就像[1=~^(Jeff | Roger | Brian)$]@tripleee Sure(即使不是正则表达式,条件也可以组合成一个析取)。第一个测试(无论是在3到7之间)只有当
$1
是一个数字时才有意义;这个测试在技术上基本上是可行的,但是由于
$1
有时被认为是非数值的,所以在测试之前,您应该测试这个测试是否有意义。