我如何修复第42行:[:Linux中的参数太多了?

时间:2014-03-01 02:10:39

标签: linux shell unix ksh

我有一个以#!/bin/ksh

开头的脚本

以下是创建第42行的代码:[:参数太多

if  [ -f "$Log_dir/output.rej" ] && 
    [  grep -Hne "fails to validate" $Log_dir/output.rej >/dev/null ]

它扩展为(set -xv)

+ '[' -f /export/home/xxxx/xsdlog/output.rej ']'
+ '[' grep -Hne 'fails to validate' /export/home/xxxx/xsdlog/output.rej ']'
TEST_VALIDATE.sh: line 42: [: too many arguments

我试过

if  [ -f $Log_dir/output.rej ] &&
    [  grep -Hne "fails to validate"   $Log_dir/output.rej >/dev/null ]

没有引号(“)。结果相同。

如何解决此错误?

1 个答案:

答案 0 :(得分:7)

停止尝试使用[命令执行另一个命令。

if ... && grep ...

示例:

if  [ -f "$Log_dir/output.rej" ] && 
    grep -Hne "fails to validate" $Log_dir/output.rej >/dev/null
then
    ...
fi