当然这是一个简单的 - 仍在学习我的 sh 脚本。我有:-

if [ $3 < 480 ]; then
  blah blah command
else
   blah blah command2
fi

$3 是一个传递变量,也是一个整数。但是,当此脚本运行时,它会报告:-
line 20: 480: No such file or directory

使困惑。

最佳答案

请使用 [ "$3" -lt 480 ] 否则它将被视为括号内的输入重定向。这就是您收到错误的原因: 480: No such file or directory

要查看可用的替代方案:

  • [ "$3" -lt 480 ] -- 数值比较,兼容所有 POSIX shell
  • [ "$3" \< 480 ] -- 字符串比较(数字通常错误!),兼容所有 POSIX shell
  • [[ $3 < 480 ]] -- 字符串比较(数字通常是错误的!),只有 bash 和 ksh
  • (( $3 < 480 )) -- 数值比较,仅 bash 和 ksh
  • (( var < 480 )) -- 数值比较,仅限 bash 和 ksh,其中 $var 是一个包含数字
  • 的变量

    检查 http://www.gnu.org/software/bash/manual/bashref.html#Bash-Conditional-Expressions 以了解更多信息。

    关于bash - if 语句中的小于运算符 '<' 导致 'No such file or directory',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7119130/

    10-14 06:34