从鱼壳功能运行财富

时间:2016-02-29 20:28:21

标签: fish

我正在尝试编写一个函数quickgit,它可以自动添加,提交和推送来自fortune的提交消息的额外好处。我有以下脚本:

function quickgit
    git add --all
    git commit -m (fortune)
    git push
end

除了提交消息之外,哪些工作是"(fortune)",而不是来自财富的消息。如何确保在我的鱼功能中运行和扩展fortune

2 个答案:

答案 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"

但请注意,这将用空格替换每个换行符。