所以基本上我正在尝试检查传递给脚本的参数。如果它有三个参数并且第三个参数是 1,那么我希望它继续。如果它有四个参数并且第三个参数不是 1,我也希望它继续。
所以基本上我认为我可以做...
if ([ $# -ne 3 ] and [ "$3" -ne "2" ])
then
exit 0
fi
但是,似乎 Bash 没有并且可以用于 if,所以我想我可以只使用嵌套的 if,但是现在它仍然在抱怨。所以这就是我目前所拥有的......
if [ $# -ne 3 ]
then
if [ "$3" -ne "1" ]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be left off if you want all data (Mode=1)
"
exit 0
fi
fi
if [ $# -ne 4 ]
then
if [ "$3" -ne "2" ]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be left off if you want all data (Mode=1)
"
exit 0
fi
fi
那么我哪里错了?我不能在 Bash 中嵌套 if 语句吗?有没有一种我完全错过的超级禅宗方式?
感谢您能给我的任何帮助。
新问题...
现在,由于某种原因,代码根本不起作用。没有错误或任何东西,它只是不起作用。它不检查参数的数量。我已经完全没有参数地运行了脚本,它只是跳过它,就像它甚至不存在一样。
奇怪的是,我确信代码昨天还在工作。今天回来,不多说了。关于问题是什么的任何想法?(对不起,但我必须删除已接受的答案。)
if [[ $# = 3 && "$3" != "1" ]]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be omitted if all data is required (Mode=1)
"
exit 0
fi
if [[ $# > 4 ]]
then
echo "Improper number of arguments.
FORMAT make-csv-data <STUDY> <TAG> <MODE> <SELECT>
Select can be omitted if all data is required (Mode=1)
"
exit 0
fi
编辑二:
Bash shell 不喜欢我正在尝试做的这个脚本的一些事情。我可能最终会用另一种脚本语言重写它,并为该项目做一些我想到的更多事情。无论如何感谢您的帮助。