Quantcast
Channel: Bashタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 2868

bashで出力にダブルクォートをつける

$
0
0

TL; DR

行ごとのやつ

$ echo-e"aaa bbb\nccc ddd" | jq -R."aaa bbb""ccc ddd"

列ごとのやつ

$ echo-e'aaa bbb\nccc ddd' | sed's/[^ ]\+/"&"/g'"aaa""bbb""ccc""ddd"

動機

 bashで出力にダブルクォートを含める必要があるとき、エスケープを嫌ってシングルクォートを使いたくなる。

$ echo'"Hello, world"'"Hello, world"$ echo"\"Hello, world\"""Hello, world"

 しかし変数を埋め込もうとするとシングルクォートは使えない。
 そこで上のようなちょっとした解決策が役に立つ。jqはjsonをシェルで扱うためのコマンドだ。sedのようにプリインストールされていないが、インストールしておいて損はない。

$ greeting=Bonjour target=monde
$ echo"$greeting, $target" | jq -R."Bonjour, monde"

 例えば、次のようにして標準出力をjsonのリストに押し込める。便利だ。

$ echo-e"Hello, world\nBonjour, monde" | jq -R. | jq -sc.["Hello, world","Bonjour, monde"]$ echo-e"Hello, world\nBonjour, monde" | jq -R. | jq -sc'{greetings: .}'{"greetings":["Hello, world","Bonjour, monde"]}

Viewing all articles
Browse latest Browse all 2868

Trending Articles