我有一个在sh shell中运行的脚本,该脚本运行良好。但是我添加了一个用ksh shell编写的脚本(在脚本的开头有#!/ bin / ksh),但是每次出现错误时
./monitor_FMn2.sh[19]: 104: not found
每次更改遇到错误的第二行时,第19行是我称为ksh脚本的行
if `wc -l < $LOGFILE` > 55;
then
logcycle $LOGFILE
fi
logcycle是ksh脚本。
`wc -l < $LOGFILE` > 55
运行名称为wc
split + glob(在本例中为104)的输出的命令,并将其输出重定向到55
当前目录中的文件。由于系统上没有名为104的命令,因此会出现该错误。
想必您想写:
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
可以运行[
akatest
命令(而不是104
)来测试wc -l
解释为算术表达式的输出(这样[
就不会抱怨前导空格,如果有的话)是否大于55。
或使用ksh语法:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(在命令不产生任何输出+0
的情况下wc -l < "$LOGFILE"
(例如,$LOGFILE
无法打开读取的情况)。
(您可能还希望删除55
脚本先前创建的空文件)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句