与えられた区切り文字で引数を連結する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[@]}"
答え2
これは私にとって効果的です。
#! /bin/bash
d="$1";
shift;
echo -n "$1";
shift;
echo -e "${@/#/$d}";
出力:
$ ./1.sh ' *** ' "${a[@]}"
one *** two *** three four *** five
$ ./1.sh '\n' "${a[@]}"
one
two
three four
five