[解決済み】Bashでheredoc値を変数に代入する方法は?
2022-03-24 21:53:24
質問
次のような複数行の文字列があります(引用符を含む)。
abc'asdf"
$(dont-execute-this)
foo"bar"''
Bashでheredocを使って変数に代入するにはどうしたらいいでしょうか?
改行を維持したいのですが。
文字列の中の文字をエスケープしたくない、迷惑だ...。
どのように解決するのですか?
の無駄な使用を避けることができます。
cat
で、不一致の引用符をうまく処理することができます。
$ read -r -d '' VAR <<'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF
echoするときに変数を引用しないと、改行が失われます。クォートすることで改行が保たれます。
$ echo "$VAR"
abc'asdf"
$(dont-execute-this)
foo"bar"''
ソースコードの可読性を高めるためにインデントを使用する場合は、less-thansの後にダッシュを使用します。インデントはタブのみ(スペースなし)で行う必要があります。
$ read -r -d '' VAR <<-'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF
$ echo "$VAR"
abc'asdf"
$(dont-execute-this)
foo"bar"''
代わりに、結果の変数の内容にタブを残したい場合は、タブを
IFS
. ここでのdocのターミナルマーカー(
EOF
) はインデントしてはいけません。
$ IFS='' read -r -d '' VAR <<'EOF'
abc'asdf"
$(dont-execute-this)
foo"bar"''
EOF
$ echo "$VAR"
abc'asdf"
$(dont-execute-this)
foo"bar"''
コマンドラインでタブを挿入する場合は Ctrl - V タブ . エディタを使っている場合、エディタによっては、これも使えるかもしれませんし、タブを自動的にスペースに変換する機能をオフにする必要があるかもしれません。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] Bashスクリプトでファイルへのheredocを書き込むには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 -bash: 予期しないトークン「改行」付近での構文エラー
-
[解決済み】SEDをワイルドカードで使用する場合
-
[解決済み] bashスクリプトでタブ文字をエコーする
-
[解決済み] sed で二重引用符と単一引用符をエスケープするにはどうしたらいいですか?
-
[解決済み] bashスクリプトで変数の束縛を解除
-
[解決済み] condaのアップデート後、ターミナルのプロンプトから(base)を削除する方法
-
[解決済み] bashでのDiffコマンド
-
[解決済み] bashの"-ne "はどういう意味ですか?
-
[解決済み] Bashで複数行の文字列を出力するには?
-
[解決済み] 複数行のシェル変数を指定する方法は?