Shell : 整数表达式预期错误

Shell : Integer expression expected error

我是 Unix 环境编程的初学者,一开始我遇到了一些困难。我在 Windows 上使用 PUTTY。 这是我的脚本和代码,但是当我 运行 它时,它告诉我

integer expression expected

#!/bin/bash

hour='date|cut-c12-13'

if [ $hour -ge 0 -a $hour -lt 12 ]; then
      echo "good morn"
elif [ $hour -lt 18 ]; then
     echo "good afternoon"
else 
     echo "good night"
fi

它似乎不能与管道或其他东西一起正常工作;它不会将 'date' 翻译成原始日期,但我认为它是一个词。

您的代码显示常规引号 '…' 而不是反引号 `…`。使用

hour=$(date | cut -c12-13)

cut-c12-13 之间的间距很重要。一般来说,使用 $(…) 比使用反引号更好(参见 Pipe standard input and command line arguments in Bash for a discussion of why). Also, learn How to debug a Bash script,这里的意思是 bash -x script.sh

根据编写的代码,$hour 中的值是字符串 date|cut-c12-13(不是命令的输出),它不是整数表达式,因此会出现错误消息。此外,您很可能没有名为 cut-c12-13 的命令,这就是间距在这里很重要的原因。


正如问题的评论所示,还有许多其他问题也应该解决,从直接从 date 命令生成您想要的信息到在变量引用周围使用双引号,而不是使用已弃用的运算符 -a-o[,有些人认为您应该使用 [[ … ]] 而不是 [ … ],或者 Bash-具体(( … )),等等