回答:
^M
。問題は、スクリプトがWindowsを使用する誰かによって私に与えられたということです。簡単にdos2unix
修正:)
一般に、コマンドを次の行に続けるために、行の最後にバックスラッシュを使用できます。ただし、コマンドが暗黙的に継続される場合、つまり、行がトークンで終了し、コマンドを正当に終了できない場合があります。その場合、シェルは次が来ることを知っているので、バックスラッシュは省略できます。いくつかの例:
# In general
$ echo "foo" \
> "bar"
foo bar
# Pipes
$ echo foo |
> cat
foo
# && and ||
$ echo foo &&
> echo bar
foo
bar
$ false ||
> echo bar
bar
異なるが関連しているのは、引用符内の暗黙の継続です。この場合、バックスラッシュなしで、単に文字列に改行を追加します。
$ x="foo
> bar"
$ echo "$x"
foo
bar
バックスラッシュを使用すると、論理行が複数の論理行に分割されます。
$ x="foo\
> bar"
$ echo "$x"
foobar
[[
- ]]
条件内の特定の状況ではバックスラッシュを省略できるように思えますが、他の状況ではそうではなく、ルールを理解しようとしています。
\
仕事をします。@Guillaumeの回答と@Georgeのコメントがこの質問に明確に答えています。ここで、The backslash has to be the very last character before the end of line character.
このコマンドを検討する理由を説明します。
mysql -uroot \ -hlocalhost
の後\
にスペースがある場合、行の継続は機能しません。その理由は、\
非表示の改行文字ではなくスペースである次の文字の特別な意味を取り除くためです。\
この例では、改行文字はスペースの後にあります。