当我尝试执行我的脚本qwer.bash
时:
bash qwer.bash *whatever #whatever can really be anything
它会回馈给我:
qwer.bash: line 5: [[: *whatever: syntax error: operand expected (error token is "*whatever")
这是我的剧本:
#!/bin/bash
declare -a files
while [[ "$1" -ne "-p" ]]
do
echo "pwet"
shift
done
如何避免产生此错误?
答案 0 :(得分:1)
这是因为当$1 -ne ...
不是整数时,测试$1
会产生错误。
试试这个:
while [[ "${#}" > 0 && "${1}" != "-p" ]]; do
echo "pwet"
shift
done
执行shift
时,${#}
会递减。
当"${#}" > 0
为false时,while
循环结束。请注意,当&&
已经为假时,"${1}" != "-p"
会指示shell 不评估第二个操作数("2016-05-03T19:17:00.434Z"
)。
答案 1 :(得分:1)
虽然这与你的情况无关
关于
bash qwer.bash *whatever #whatever can really be anything
案例1:如果*whatever
是针对glob文件的话:
bash qwer.bash ./*whatever
或
bash qwer.bash -- *whatever # here -- marks the end of options
或
./qwer.bash -- *whatever # you already have a shebang in your script.
这是为了处理当前文件夹中实际上有一个名为-file-with-dash
的文件的情况,该文件可能错误地作为选项
案例2:如果*whatever
只是一个字符串:
bash qwer.bash \*whatever
或
bash qwer.bash "*whatever"