我想确保我的 bash 脚本可以正确检测用户的输入参数。具体来说,用户只能将 1 或 2 或 3 传递到脚本中,否则脚本将终止。我写了下面的代码:
#!/bin/bash
for args in $@
do
echo $args
done
if [ "$#" != 1 ] && [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
exit 1
fi
这个脚本只能在用户没有输入的情况下进行捕获,但不能检查用户是否确实输入了数字 1 而不是其他值。
顺便说一句,我不确定如何表达“输入参数可以接受数字 1 或 2 或 3”。
最佳答案
$#
是一个整数,所以你必须使用整数比较。例如,您可以说:
if [ "$#" -ne 1 ]; then
echo "illegal number of parameters"
exit 1
fi
要检查参数是 1、2 还是 3,您可以使用此正则表达式(参见 something related):
if [[ ! $1 =~ ^(1|2|3)$ ]]; then
echo "the number is not 1, 2 or 3"
exit 1
fi
为了表达“输入参数可以接受数字 1、2 或 3”,我会说“我们可以只接受参数为 1、2 或 3”。
关于linux - 检测参数的数量和传递给 bash 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30098998/