bash - 如果输出不为空,则打印命令的输出,否则回显无输出
问题描述
我在 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
但我觉得这太多余了。是否有替代方法,我只能使用该命令一次?
解决方案
if output=$(something); [[ $output ]]; then
printf '%s\n' "$output" ## less-buggy alternative to echo "$output"
else
echo "Nope"
fi
推荐阅读
- .net - 并行处理不会从等待返回
- react-native - 使用 React Native Router Flux 在所有场景中维护选项卡
- reactjs - React 组件不会在状态更改时重新渲染
- python - 如何更改字典中的键
- c# - 如何防止标签被截断?
- python - 将python文件转换为exe后找不到文件错误
- python - 澄清图像处理中的 np.unique() 值
- github - 如何在 git 存储库中“查找和替换”?
- c++ - C++:二进制到十进制,带转换过程的外观
- mysql - 从 Heroku 节点应用程序连接到远程 nysql 数据库 - 在 localhost 上工作