首页 > 解决方案 > 如果输出不为空,则打印命令的输出,否则回显无输出

问题描述

我在 bash 中运行命令。我只想运行一次命令。

如果命令有输出,则打印输出。但如果没有输出,回显类似No output

我的命令是

gcloud projects get-iam-policy sap-development  --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members: user:some@email.com"

如果有结果,它会打印输出。如果没有结果,则输出中不会打印任何内容。

我可以做类似的事情

if [[ $(gcloud projects get-iam-policy <PROJECT>  --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members: user:some@email.com" ) ]] 
then
    gcloud projects get-iam-policy <PROJECT>  --flatten="bindings[].members" --format='table(bindings.role)' --filter="bindings.members: user:some@email.com"
else
    echo "No permissions found"
fi

但我觉得这太多余了。是否有替代方法,我只能使用该命令一次?

标签: bash

解决方案


if output=$(something); [[ $output ]]; then
  printf '%s\n' "$output"  ## less-buggy alternative to echo "$output"
else
  echo "Nope"
fi

推荐阅读