脱出"<

脱出"<

私はよく - で終わる文字列をコミットメッセージとして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で正しく引用された変数を使用することも参照してください$*)。

関連情報