シェルと改行とクォート
1662 ワード
シェル(bash)で変数に入れた複数行の文字列をsed処理したのに、結果が一つしかない……となって困った。結論としては改行をそのまま取り出すにはダブルクォート"
が必要だった。
値に改行を入れる
バッククォート\
に続いて改行する場合、その改行はなかった事になる。
$ echo abc\
> def
abcdef
改行を実際の値に入れるには、シングルクォート'
やダブルクォート"
を使う。
$ echo 'abc
> def'
abc
def
$ echo "abc
> def"
abc
def
変数から取り出す
変数x
に改行を含む文字列を代入する。
$ x="abc
> def"
これを取り出すときも、クォートによって挙動が異なる。つまり改行をそのまま取り出すにはまたダブルクォート"
が必要になる。
$ echo $x
abc def
$ echo "$x"
abc
def
jsonなどの場合は問題にならないが、複数行を前提として処理していると初めに書いたようなことが起こるので注意が必要だった。(cat
とか多数のパラメータを受け取るコマンドにはクォートなしの挙動の方が都合がいいのだろう。)
Author And Source
この問題について(シェルと改行とクォート), 我々は、より多くの情報をここで見つけました https://qiita.com/hasht/items/20b47d2656c21f79f663著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .