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-具体(( … ))
,等等
我是 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-具体(( … ))
,等等