我尝试在 bash 脚本中实现位置参数并检查它们,但遇到了一些问题如果/那么switch 语句。
脚本:
#set "default" parameter
query=""
while [ "$1" != "" ]; do
case $1 in
-q | --query ) shift
query=$1
;;
esac
shift
done
#query cannot be empty
if (($query == ""))
then
echo 'no query'
exit
fi
echo "query - $query"
当我设置正确的参数时,一切都运行良好:
$ ./script.sh -q request
query - request
-q
参数不能为空,我需要验证它。因此,当命令行如下所示时:
$ ./script.sh -q
或者
$ ./script.sh
我收到此错误:
./main.sh: line 13: ((: == : syntax error: operand expected (error token is "== ")
query -
if
在这种情况下,如何正确实施操作员?
答案1
(( ... ))
用于算术评估。
您应该使用[ ... ]
(就像在while
条件中所做的那样)或 bash 的扩展测试语法[[ ... ]]
- 并记得引用“$query”并在[
and]
运算符周围留出空格:
if [ "$query" == "" ]
或者,使用-z
空字符串测试:
if [ -z "$query" ]
如需有关此类问题的一般帮助,请尝试www.shellcheck.netshellcheck
或从存储库安装该包universe
。