私は以下のパターンを使用してbashスクリプトの端末に複数行のメッセージを印刷しました。
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
これは働いていました。数日前まではモード動作が中断されました。動作を停止するということは、bashがスクリプトでこれらの区切り文字表現を見つけたときに何もしないようで、出力がないことを意味します。
過去数日間に私が考えることができる唯一の変更は、スクリプトが実行される環境が「フル」インストールではなく、Ubuntu 14.04ライブUSBであるということです。その後、スクリプトステートメントの前に
heredocを移動すると、再び機能し始めることがわかりました。set -o errexit
つまり、これは機能しません
#!/bin/bash
set -o errexit
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
結果:(何も)
しかしこれは実際に働く
#!/bin/bash
read -d '' message <<- EOF
this is a
mulitline
message
EOF
echo "$message"
結果
$ sudo ./script.sh
this is a
mulitline
message
- バッシュ --バージョン-
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
ベストアンサー1
read
区切り文字が見つからない場合は、ゼロ以外の終了ステータスが返されます。区切り文字を空の文字列に設定した後、通常はテキストファイルに見つからないNULバイトを区切り文字として使用します。