运行鱼财shell函数
Running fortune from fish shell function
我正在尝试编写一个函数 quickgit
,它可以自动添加、提交和推送,并具有来自 fortune
的提交消息的额外好处。我有以下脚本:
function quickgit
git add --all
git commit -m (fortune)
git push
end
除了提交消息是 "(fortune)"
而不是来自 fortune 的消息外,它是有效的。如何确保 fortune
是 运行 并在我的 fish 函数中展开?
fish
在获得恰到好处的引用方面存在很多问题,我会避免在脚本中完全使用它。 (参见 https://github.com/fish-shell/fish-shell/issues/159)
我无法重现你的确切问题,但 运行 到我自己的关于多线命运的问题。 (参见引用的错误)
也就是说,对于您的用例,您可以完全避免它:
function quickgit
git add --all
fortune | git commit -F -
git push
end
默认情况下,命令替换在换行符边界上拆分命令的输出。因此,多行算命会将多个参数传递给 git commit -m
。这意味着只有第一行将由 -m 选项处理,第二行到第 n 行最终将被视为文件名。尝试将 set -l IFS
添加到您的函数中以禁止该拆分。另一种方法是在 var 中捕获输出然后插入 var:
set -l fortune (/usr/games/fortune)
git commit -m "$fortune"
但请注意,每个换行符都会替换为 space。
我正在尝试编写一个函数 quickgit
,它可以自动添加、提交和推送,并具有来自 fortune
的提交消息的额外好处。我有以下脚本:
function quickgit
git add --all
git commit -m (fortune)
git push
end
除了提交消息是 "(fortune)"
而不是来自 fortune 的消息外,它是有效的。如何确保 fortune
是 运行 并在我的 fish 函数中展开?
fish
在获得恰到好处的引用方面存在很多问题,我会避免在脚本中完全使用它。 (参见 https://github.com/fish-shell/fish-shell/issues/159)
我无法重现你的确切问题,但 运行 到我自己的关于多线命运的问题。 (参见引用的错误)
也就是说,对于您的用例,您可以完全避免它:
function quickgit
git add --all
fortune | git commit -F -
git push
end
默认情况下,命令替换在换行符边界上拆分命令的输出。因此,多行算命会将多个参数传递给 git commit -m
。这意味着只有第一行将由 -m 选项处理,第二行到第 n 行最终将被视为文件名。尝试将 set -l IFS
添加到您的函数中以禁止该拆分。另一种方法是在 var 中捕获输出然后插入 var:
set -l fortune (/usr/games/fortune)
git commit -m "$fortune"
但请注意,每个换行符都会替换为 space。