スクリプトのコマンドに改行文字を渡すには?

スクリプトのコマンドに改行文字を渡すには?

与えられた区切り文字で引数を連結するbashスクリプトがあります。

#! /bin/bash   

d="$1";
shift;

echo -n "$1";
shift;
printf "%s" "${@/#/$d}";

これが私が使用する方法です:

$ a=(one two 'three four' five)
$ myscript ' *** '  "${a[@]}" 
one *** two *** three four *** five

今、区切り文字で改行を作成したいのですが、これは起こりません。

$ myscript '\n'  "${a[@]}" 
one\ntwo\nthree four\nfive

スクリプトのprintfコマンドに改行文字を渡すには? (可能であればスクリプトを書き換えないでください)。ありがとうございます。

ベストアンサー1

$'...'\n改行に展開するには、引用の種類を使用します。

myscript $'\n'  "${a[@]}"

または、文字通り単一引用符または二重引用符内に改行文字を渡します。

myscript '
'  "${a[@]}"

おすすめ記事