私はよく - で終わる文字列をコミットメッセージとして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行:構文エラー:予期しないファイルの終わり
<<
エイリアスのように動作するようにどのようにエスケープできますか?
答え1
EOFは、関数が定義されたときに計算されます。もちろん、Bash は、一致するEOF
ターミネータが見つかるまでスクリプトの残りの部分をスキップします。
あなたは何ですか〜らしい現在探しているのは、特定のトークンを介して標準入力を使用する方法です。一般的なアプローチは、単にメッセージを入力し、ctrl-D(またはファイルの終わりを知らせるように端末が設定されているすべて)で終わることです。
commitml() {
git commit "$@" -F-
}
commitml <<EOF
もちろん、必要に応じてこれを使用することも、関数名を次の_commitml
ように変更することもできます。
alias commitml='_commitml <<EOF'
これは、関数のエイリアスのいくつかの有効な使用の1つです。一重引用符内のテキストは、実際にエイリアスを使用した場合にのみ評価されます。それ以降のすべてのタグはcommitml
渡されます"$@"
(quoting-buggyで正しく引用された変数を使用することも参照してください$*
)。