我经常使用git commit -F- <<EOF
来编写以EOF
- 结尾的字符串作为提交消息。
使用
alias commitml="git commit -F- <<EOF"
按预期工作。
不过,我希望能够传递论点。
所以我想在我的中定义.bashrc
:
commitml() {
git commit $* -F- <<EOF
}
当使用 source() 时会返回错误:
bash:警告:此处文档在第 6 行由文件结尾分隔(需要“EOF”) bash:/home/yannick/.bashrc:第 8 行:语法错误:意外的文件结尾
是否可以在某种程度上转义 the ,<<
使其像在别名中一样工作?
答案1
定义函数时计算 EOF;当然,Bash 会跳过脚本的其余部分,直到找到匹配的EOF
终止符。
你什么似乎要寻找的是一种通过特定令牌消耗标准输入的方法。通常的方法是简单地键入消息并使用 ctrl-D 结束它(或者您的终端设置为用于发出文件结束信号的任何内容)。
commitml() {
git commit "$@" -F-
}
commitml <<EOF
当然,如果你愿意的话,你可以这样使用;或者也许将该函数重命名为_commitml
并设置
alias commitml='_commitml <<EOF'
这是在函数上使用别名的少数有效用途之一——单引号内的文本仅在您实际使用别名时才会被评估。之后的任何标记commitml
都将被传递到"$@"
(还要注意在 quoting-buggy 上使用这个正确引用的变量$*
)。