このように入力するには?

このように入力するには?

私はUnix、Linux、OS XのShellプログラミングの第4版を読んでいます。

P.112 にこれの例を示します。

$ lines=one'
> 'two
$ echo "$lines"
one
two
$ lines=ones\
> two
$ echo "$lines"
onetwo
$

最初の文章で詰まっています。

私が試したのはこれです。

jackson@jackson-VirtualBox:~$ lines=one'>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one>two
jackson@jackson-VirtualBox:~$ $lines=one'>'two
one>two=one>two: command not found
jackson@jackson-VirtualBox:~$ lines=one \n '>'two
n: command not found
jackson@jackson-VirtualBox:~$ lines=one' \n>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one \n>two
jackson@jackson-VirtualBox:~$ lines=one'>'two
jackson@jackson-VirtualBox:~$ lines=one'\n>'two
jackson@jackson-VirtualBox:~$ echo "$lines"
one\n>two
jackson@jackson-VirtualBox:~$ lines=one\n>two
jackson@jackson-VirtualBox:~$ echo "$lines"
onen

私の質問は:入力方法です。

$ lines=one'
> 'two

ベストアンサー1

これは次のように入力されます。

lines=one'
'two

つまり、最初の引用符の後にEnterを押します。

引用符の内側にあるため、bashは次の入力行(閉じた引用符で始まる)を前の行の一部として扱います。これは> 、前の行で続行するためのより多くの入力を受け入れる準備ができたというbashのヒントです。これは入力する意味ではありません。

プロンプトは、$PS2「補助プロンプト文字列」とも呼ばれる変数の値です。連続/補助入力ラインに使用され、メイン$PS1入力ラインには使用されません。システムでそれらがどのように定義されているかを確認してくださいdeclare -p PS1 PS2。人々がPS1をカスタマイズするのは一般的ですが、PS2をカスタマイズすることはまれです(したがってこれがデフォルトになる可能性があります> )。

最新バージョンのbash(および他のbourne様シェル)を使用して同じことを行うもう1つの方法は次のとおりです。

lines=$'one\ntwo'

notを使用すると、$'...'単にbashに文字列のエスケープコード(改行など)を'...'解釈するように指示します。\n

おすすめ記事