我正在尝试编写一个函数quickgit
,它可以自动添加,提交和推送来自fortune
的提交消息的额外好处。我有以下脚本:
function quickgit
git add --all
git commit -m (fortune)
git push
end
除了提交消息之外,哪些工作是"(fortune)"
,而不是来自财富的消息。如何确保在我的鱼功能中运行和扩展fortune
?
答案 0 :(得分:1)
fish
有足够的问题与正确引用的更好点,我完全避免在脚本中使用它。 (见https://github.com/fish-shell/fish-shell/issues/159)
我无法重现你的确切问题,但遇到了我自己的多线命运。 (参见引用的bug)
话虽如此,对于您的用例,您可以完全避免使用:
function quickgit
git add --all
fortune | git commit -F -
git push
end
答案 1 :(得分:1)
默认情况下,命令替换会在换行边界上拆分命令的输出。因此,多行财富会将多个参数传递给git commit -m
。这意味着只有第一行将由-m选项处理,第二行至第n行将最终被视为文件名。尝试将set -l IFS
添加到您的函数以禁止该拆分。另一种方法是捕获var中的输出,然后插入var:
set -l fortune (/usr/games/fortune)
git commit -m "$fortune"
但请注意,这将用空格替换每个换行符。