如何在bash
或任何其他类似bash的shell中仅在另一个命令输出某些内容时才运行该命令?
我正在开发一个API来更新一个工具该高速缓存存储,并将更新后的缓存提交到GitHub,我想做的是,在重建缓存之后,我想检查git diff HEAD ./path/to/cache
是否输出了一些东西,如果输出了,我想运行git add ./path/to/cache
。
不幸的是,这不起作用:
git diff HEAD ./path/to/cache && git add ./path/to/cache
我想是因为第一个命令没有返回false
或者exit,而是输出一个空字符串或者什么都不输出。那么,在bash
中实现这个的正确方法是什么呢?
3条答案
按热度按时间yvgpqqbh1#
使用
--exit-code
选项,如果没有差异,则git diff
退出,返回0,否则返回1,然后可以忽略输出。olqngx592#
@chepner贴出的答案对于我的用例来说绝对是最好的,但我的问题本来是针对任何用例的,如果想让任何其他命令都实现同样的行为,可以使用
grep
命令检查第一个命令是否输出了任何东西。ao218c7q3#