在bash中将读取字符串转换为整数

时间:2015-12-08 04:10:59

标签: bash

我试图从用户那里阅读,然后执行以下操作。

read framechoice
 if [ $framechoice -gt 100 ]; then 
   if [ $framechoice -lt 0 ]; then
          framechoice=101
   fi
 fi

它给我以下错误。

  

[:-gt:一元运算符预期

谁能告诉我哪里出错了。

2 个答案:

答案 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之前尝试进行数字比较。