在比较bash脚本[: 2315669844: unary operator expected
中的两个整数值时,我收到此错误消息。我已查找此错误,似乎没有任何内容适合我的情况。这是我的脚本
CURR_AVAIL=`df /home2 | tail -1 | awk '{ print $4 }'`
DIFF_AVAIL=$((CURR_AVAIL-PREV_AVAIL))
echo “---------------------------------------------“ >> sys_log
date >> sys_log
if [ "$DIFF_AVAIL" –gt 1000 ];
then
echo $DIFF_AVAIL >> sys_log
elif [ "$DIFF_AVAIL" –lt -1000 ];
then
echo $DIFF_AVAIL >> sys_log
fi;
答案 0 :(得分:1)
可能发生错误的行
if [ "$DIFF_AVAIL" –gt 1000 ];
和
elif [ "$DIFF_AVAIL" –lt -1000 ];
如果$DIFF_AVAIL
以某种方式完全为空,则[ "$DIFF_AVAIL" –lt -1000 ]
将变为[ -lt -100]
,而-lt
期望其两侧的两个参数作为二元运算符。
请echo
$DIFF_AVAIL
Quote
检查它是否由于某种原因而为空。这应该是最可能的原因。
此外,我在您的代码中看到了一些与文本编辑器相关的问题。您在代码中使用了两种不同类型的echo
。其中一个(最可能是在<pre>
spring:
datasource:
source:
driver-class-name: org.sqlite.JDBC
url: jdbc:sqlite::resources/db/StudentCarrer.db3
destination:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://nas4:3306/cku
username: cku
password: cku
</pre>
行中使用的那个)应该是无效的。
答案 1 :(得分:1)
Chepner是正确的我没有意识到我的'-gt和-lt'运算符没有像我原先想象的那样使用连字符。它读起来好像我输入'--gt和--lt'。我已将我的脚本从文本编辑器复制到vim。
CURR_AVAIL=df /home2 | tail -1 | awk '{ print $4 }'
DIFF_AVAIL=$((CURR_AVAIL-PREV_AVAIL))
echo “---------------------------------------------“ >> sys_log
date >> sys_log
if [ "$DIFF_AVAIL" -gt 1000 ];
then
echo $DIFF_AVAIL >> sys_log
elif [ "$DIFF_AVAIL" -lt -1000 ];
then
echo $DIFF_AVAIL >> sys_log
fi;
感谢您的帮助!