methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
私は古代の貝殻で、ここで、ドキュメントのエラー私のhere-docs(<< - )が私に構文エラーを与えているのはなぜですか?
syntax error: unexpected end of file
methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
私は古代の貝殻で、ここで、ドキュメントのエラー私のhere-docs(<< - )が私に構文エラーを与えているのはなぜですか?
syntax error: unexpected end of file
を取得していますこれは正しいです、あなたは正確にタグと一致する必要があります。行の先頭に
methods() {
cat <<!
start
stop
restart
reload
status
methods
!
}
はい、あなたは!
続く単一のタブにマーカーを設定するcat <<'^I!'
のようなトリッキーなことを行うことができにもかかわらず:意味。
bash
(およびそれ以前のシェル)は、データラインのすべての先頭タブと処理前の終了マーカーを削除する<<-
バリエーションで修正されました。そうすれば、あなたはまだうまくインデントできます
methods() {
cat <<-!
start
stop
restart
reload
status
methods
!
}
しかし、但し書きに注意してください:それはは、一般的に空白ではない、タブを取り除きます。その!
文字の前にスペース(またはのタブ以外の文字、印刷可能なものなど)がある場合は機能しません。
あなたがvi
を使用している場合は、それ以外の場合はxd
かod -xcb
はあなたのファイルの進ダンプを与えることができ、少し良くない文字を見ることが:set list
を入力することができます。
ありがとうございました –
初期のシェルは「本当に古代」を意味します。 7th Edition Unix(1979)はそれをサポートしていませんでしたが、私はSystem III(と私はSystem Vが確かに確信しています)は、 –
ありがとう、@ジョナサン、私の進歩的な年を指摘してください:-) – paxdiablo
クローズアップ投票者に:本当に?あなたは 'bash'はプログラミングではないと思っていますか?_あなたはそこにその質問の中で定義されている関数があるのを見ていますか? – paxdiablo