我试图从用户那里阅读,然后执行以下操作。
read framechoice
if [ $framechoice -gt 100 ]; then
if [ $framechoice -lt 0 ]; then
framechoice=101
fi
fi
它给我以下错误。
[:-gt:一元运算符预期
谁能告诉我哪里出错了。
答案 0 :(得分:1)
如果您不输入任何内容,则会发生这种情况:
$ cat myscript
read framechoice
if [ $framechoice -gt 100 ]; then
if [ $framechoice -lt 0 ]; then
framechoice=101
fi
fi
$ bash myscript
<enter>
myscript: line 2: [: -gt: unary operator expected
请尝试输入实际内容:
$ bash myscript
42<enter>
然后脚本会成功退出。
答案 1 :(得分:1)
您的程序需要处理空输入。这最容易通过properly quoting the variable实现;然后
[ "" -gt 100 ]
评估为integer expression expected
,这不再是语法错误;但是,它会抛出警告tableView.reloadData()
。
更好的是,可以过滤输入,这样就不会在making sure the input is numeric之前尝试进行数字比较。