ANSI-C 引用符の使用:
var="$var"$'\n'"in a box"
$'\n'
を変数に入れることができます:
newline=$'\n'
var="$var${newline}in a box"
ところで、この場合、連結演算子を使用することをお勧めします。
var+="${newline}in a box"
ANSI-C の引用が気に入らない場合はprintf
、その-v
オプションを使用できます。
printf -v var '%s\n%s' "$var" "in a box"
次に、変数の内容を出力するために、var
引用符を忘れないでください!
echo "$var"
または、さらに良いことに、
printf '%s\n' "$var"
述べる。Bash では大文字の変数名を使用しないでください。これはひどいことです。ある日、既存の変数と衝突するでしょう!
次のように、間接展開を使用して変数に改行と文字列を追加する関数を作成することもできます (マニュアルのシェル パラメータ展開セクションを参照してください)。
append_with_newline() { printf -v "$1" '%s\n%s' "${!1}" "$2"; }
それで:
$ var="The "
$ var+="cat wears a mask"
$ append_with_newline var "in a box"
$ printf '%s\n' "$var"
The cat wears a mask
in a box
$ # there's no cheating, look at the content of var:
$ declare -p var
declare -- var="The cat wears a mask
in a box"
楽しみのために、 n+1 個の引数 ( n≥1 ) をappend_with_newline
取り、改行を使用してそれらすべてを連結する関数の一般化されたバージョンを次に示します (最初の引数は展開される変数の名前であることを除いて)。区切り記号を付け、変数に答えを入れます。変数の名前は最初の引数で指定されます。
concatenate_with_newlines() { local IFS=$'\n'; printf -v "$1" '%s\n%s' "${!1}" "${*:2}"; }
それがどれほどうまく機能するか見てください:
$ var="hello"
$ concatenate_with_newlines var "a gorilla" "a banana" "and foobar"
$ printf '%s\n' "$var"
hello
a gorilla
a banana
and foobar
$ # :)
IFS
とを使った面白いトリック"$*"
です。