linux - 如何修复第 42 行 : [: too many arguments in Linux?

标签 linux shell unix ksh

我有 1 个以 #!/bin/ksh 开头的脚本

这是创建第 42 行的代码片段:[: too many arguments

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 ]

不带引号(")。结果相同。

如何修复此错误?

最佳答案

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

if ... && grep ...

例子:

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

关于linux - 如何修复第 42 行 : [: too many arguments in Linux?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109225/

相关文章:

Bash 脚本从文本生成 csv 文件

linux - Unix : Restricting a directory to an user

python - 如何使用 Python 在 Raspberry Pi 上列出 I2C 地址?

php exec 和 shell_exec 不工作

python - 测试 Windows 在 Linux 上对 Python 多处理的实现

bash - 如何使用 find 和 rm 命令删除文件?

macos - 通过正在运行的进程(unix)获取已用库的列表

c - 使用 unix 函数在 OSX 下移动/复制文件

linux - 当已知进程启动时捕获 TCP 流量

linux - 如何确定目的MAC地址