转义“

转义“

我经常使用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 上使用这个正确引用的变量$*)。

相关内容