Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash &引用;太多的争论”;shell脚本中出现错误_Bash_Shell_Syntax - Fatal编程技术网

Bash &引用;太多的争论”;shell脚本中出现错误

Bash &引用;太多的争论”;shell脚本中出现错误,bash,shell,syntax,Bash,Shell,Syntax,这是我的剧本: if [ awk '$0 ~ /Failed/ { print }' $(pwd)/unity.log ]; then echo "Build Failed" exit 1 else echo "Build Success" exit 0 fi 要点是,我正在检查文件中是否有“Build Failed”消息,如果失败,则退出1 如果我所理解的是正确的,awk将在文件中没有文本时返回空字符串,如果找到文本则返回一些文本。但它会出现语法错误:/Scr

这是我的剧本:

if [ awk '$0 ~ /Failed/ { print }' $(pwd)/unity.log ]; then
    echo "Build Failed"
    exit 1
else
    echo "Build Success"
    exit 0
fi
要点是,我正在检查文件中是否有“Build Failed”消息,如果失败,则退出1


如果我所理解的是正确的,
awk
将在文件中没有文本时返回空字符串,如果找到文本则返回一些文本。但它会出现语法错误:
/Scripts/build.sh:line 41:[:参数太多

请删除
[]
,使用
grep

if grep -qw Failed unity.log; then
    echo "Build Failed"
    exit 1
else
    echo "Build Success"
    exit 0
fi

删除
[]
,使用
grep

if grep -qw Failed unity.log; then
    echo "Build Failed"
    exit 1
else
    echo "Build Success"
    exit 0
fi
试试这个:

if [ ! "$(grep 'Build Failed' unity.log)" ]; then
    exit 1
fi
试试这个:

if [ ! "$(grep 'Build Failed' unity.log)" ]; then
    exit 1
fi

您可以利用默认的退出值0。此外,没有理由执行
$(pwd)/filename
;只需执行
filename

grep -qw Failed unity.log || { echo "Build Failed"; exit 1; }
echo "Build Success"

将失败时的错误消息发送到
stderr
(使用
echo>&2
)也更为惯用。

您可以利用默认退出值0。此外,没有理由执行
$(pwd)/filename
;只需执行
filename

grep -qw Failed unity.log || { echo "Build Failed"; exit 1; }
echo "Build Success"

使用
[
..
]
将失败时的错误消息发送到
stderr
(使用
echo>&2
)。

使用
[
..
]
grep
的输出是浪费。只需将
grep
用作if条件本身。使用
[
..
]
grep
的输出是浪费的。只需将
grep
用作if条件本身。
$(pwd)
?说真的,如果文件在当前工作目录中,附加完整的目录名有什么意义?
$PWD
将在不执行子shell的情况下给出相同的结果。@alvits-I将其删除。它在OP的代码中,这就是它如何到达那里的。
$(PWD)
?说真的,如果文件在当前工作目录中,附加完整的目录名有什么意义?
$PWD
将在不执行子shell的情况下给出相同的结果。@alvits-我删除了它。它在OP的代码中,这就是它如何得到的。