我有一个在 sh shell 中运行的脚本,该脚本运行良好。但我添加了一个用 ksh shell 编写的脚本(在脚本的头部有 #!/bin/ksh),但每次我收到错误时
./monitor_FMn2.sh[19]: 104: not found
每次更改出现错误的第二行第 19 行是我调用 ksh 脚本的行
if `wc -l < $LOGFILE` > 55;
then
logcycle $LOGFILE
fi
日志循环是 ksh 脚本。
答案1
`wc -l < $LOGFILE` > 55
运行名称为 split+glob 主题的输出(在您的例子中为 104)的命令,并将其输出重定向到当前目录中wc
调用的文件。55
由于您的系统上没有名为 104 的命令,因此您会收到该错误。
想必您想写:
if [ "$(($(wc -l < "$LOGFILE") +0))" -gt 55 ]; then...
即运行[
akatest
命令(而不是)来测试解释为算术表达式104
的输出(因此不会抱怨前导空格(如果有))是否大于 55。wc -l
[
或者使用 ksh 语法:
if (($(wc -l < "$LOGFILE") +0 > 55)); then...
(+0
覆盖命令不产生输出的情况wc -l < "$LOGFILE"
,例如$LOGFILE
无法打开读取时)。
(您可能还想删除55
脚本之前创建的空文件)。