我在其他问题中查找过此内容,但似乎找不到类似的内容。然而,这似乎是非常有用的东西。
我想为我的 ZSH 片段/别名设置一个,git add .
以便它在链中完成三项工作:
- 如果路径
./readme.md
存在,则运行医生(从 npm 全局安装 CLI 应用程序)。如果没有,不执行任何操作并跳到下一步。 - 如果路径
./changelog.md
存在,则在其上运行不同的本地 CLI 安装脚本(假设名为changelogupd
)。如果没有,不执行任何操作并跳到下一步。 - 不管之前的结果如何,然后运行
git add .
现在,我有二像这样链接在别名中的命令.zshrc
它可以工作:
path-exists ./readme.md && doctoc readme.md && git add . || git add .
但我想要三:两次路径检查和条件调用加上git add .
顺便一提。是path-exists
路径存在-cli,通过 npm 全局安装。
三个命令链似乎很棘手,下面是一个无意义的混搭,以显示我正在寻找的粗略内容:
path-exists ./readme.md && doctoc readme.md && git add . || path-exists ./changelog.md && changelogupd changelog.md && git add . || git add .
我是否应该尝试使用双管覆盖所有四种情况:
(
readme
存在、不changelog
、加上git add .
readme
不存在、不changelog
、加上git add .
- 两者都
readme
存在changelog
,加上git add .
- 没有
readme
但changelog
现在,再加上git add .
)
还是有更简单的方法(或 npm CLI 库或一些秘密终端命令)?
顺便说一句,这是在 Mac 终端上运行的。谢谢。
答案1
只需写一个函数:
my-git-add-.() {
[ -e readme.md ] && doctoc readme.md
[ -e changelog.md ] && changelogupd changelog.md
git add .
}
答案2
path-exists ./readme.md && { doctoc readme.md; :; } || \
path-exists ./changelog.md && { changelogupd changelog.md; :; }
git add .
您需要对命令进行分组才能实现您想要的效果。添加该:
语句是为了在 doctoc 可能失败时提供真正的结局。