我有一个以#!/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 ]
没有引号(“)。结果相同。
如何解决此错误?
答案 0 :(得分:7)
停止尝试使用[
命令执行另一个命令。
if ... && grep ...
示例:
if [ -f "$Log_dir/output.rej" ] &&
grep -Hne "fails to validate" $Log_dir/output.rej >/dev/null
then
...
fi