我有一个 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