以下 bash 命令:
aws s3 ls s3://bucket/dir | grep _SUCCESS | wc -l
印刷:
0
我想要的是,当结果确实为 0 时,将 FAILURE 打印到终端。
这是我尝试过的:
if [ aws s3 ls s3://bucket/dir | grep _SUCCESS | wc -l = 0]; then echo FAILURE; fi
但什么都没有打印。它看起来正在等待更多输入。
答案1
你应该使用命令替换:
if [ $(aws s3 ls s3://bucket/dir | grep _SUCCESS | wc -l) -eq 0 ]
then
echo FAILURE;
fi
或者在一行中:
if [ $(aws s3 ls s3://bucket/dir | grep _SUCCESS | wc -l) -eq 0 ]; then echo FAILURE; fi
更好的解决方案是“@steeldriver”建议使用 grep 的退出状态:
if aws s3 ls s3://bucket/dir | grep -q _SUCCESS; then echo FAILURE; fi
或者:
aws s3 ls s3://bucket/dir | grep -q _SUCCESS || echo FAILURE