使用不同 shell 调用另一个脚本的脚本出错

使用不同 shell 调用另一个脚本的脚本出错

我有一个在 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脚本之前创建的空文件)。

相关内容