我在脚本开头有两个条件来验证参数。目的是应该传递两个参数,第一个参数必须是"FOO"
或"BAR"
。我在下面的工作,但我想知道如何使这个单一的if声明:
#!/bin/bash
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <FOO or BAR> <Removed for SO>"
exit
fi
if [ "$1" != "FOO " -a "$1" != "BAR" ]; then
echo "Usage: $0 <FOO or BAR> <Removed for SO>"
exit
fi
只是为了澄清一下,我要问的是如何将'#34;逻辑和&#34;与&#34;逻辑或&#34;在shell脚本中。在伪代码中,这就是我想要的:
if ( numArgs != 2 || (someArg != "FOO" && someArg != "BAR") )
答案 0 :(得分:1)
您可以在两个条件之间使用/* 1 */
{
"_id" : ObjectId("57f52636b9c3ea346ab1d399"),
"movieList" : [
{
"movieId" : 1.0,
"movieRating" : 4.0
}
],
"userId" : 5.0
}
/* 2 */
{
"_id" : ObjectId("57f52636b9c3ea346ab1d39a"),
"movieList" : [
{
"movieId" : 1.0,
"movieRating" : 4.0
},
{
"movieId" : 2.0,
"movieRating" : 5.0
},
{
"movieId" : 3.0,
"movieRating" : 5.0
}
],
"userId" : 4.0
}
:
||
答案 1 :(得分:0)
您可以使用正则表达式匹配:
if [[ $# != 2 && ! $1 =~ ^(FOO|BAR)$ ]]
then
...
fi
如果第一个参数应该允许更多的值,那么它的优点是更容易适应。
但是,我会不将两个条件合二为一,但将它们分开留下并为两者提供不同的错误消息。