gpt4 book ai didi

bash - Bash 脚本中的参数检查问题

转载 作者:行者123 更新时间:2023-11-29 09:01:23 24 4
gpt4 key购买 nike

所以基本上我是在尝试检查传递到脚本中的参数。如果它有三个参数并且第三个参数是 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 语句吗?有没有一种我完全想念的 super 禅宗方法?

感谢您能给我的任何帮助。


新问题...

现在,出于某种原因,代码根本无法运行。没有错误或任何东西,它只是不起作用。它不检查参数的数量。我已经在没有任何参数的情况下运行脚本,它只是跳过它,就像它根本不存在一样。

奇怪的是,我确定昨天的代码可以正常工作。今天回来,不多说了。关于问题是什么的任何想法? (抱歉,但我必须删除已接受的答案。)

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 不喜欢我正在尝试做的这个脚本的一些事情。我可能最终会用另一种脚本语言重写它,并为该项目做一些我想到的事情。无论如何感谢您的帮助。

最佳答案

if [ $# -ne 3 -a "$3" -ne "1" ]; then
exit 0
fi

供引用

-a = and
-o = or

或者,您可以只使用 use:

if [[ $# != 3 && "$3" != "1" ]]; then

关于bash - Bash 脚本中的参数检查问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911349/

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