Use o tipo de citação $'...'
, se quiser que o \n
seja expandido para um caractere de nova linha:
myscript $'\n' "${a[@]}"
Ou passe a nova linha literalmente entre aspas simples ou duplas:
myscript '
' "${a[@]}"
Eu tenho um script bash, que concatena seus argumentos por um determinado separador
#! /bin/bash
d="$1";
shift;
echo -n "$1";
shift;
printf "%s" "${@/#/$d}";
É assim que eu uso:
$ a=(one two 'three four' five)
$ myscript ' *** ' "${a[@]}"
one *** two *** three four *** five
Agora, gostaria de criar uma nova linha como separador, mas isso não acontece:
$ myscript '\n' "${a[@]}"
one\ntwo\nthree four\nfive
Como devo passar um caractere de nova linha para o comando printf no script? (Não estou procurando reescrever meu script, se isso for possível). Obrigado.
Isso funciona para mim:
#! /bin/bash
d="$1";
shift;
echo -n "$1";
shift;
echo -e "${@/#/$d}";
Saída:
$ ./1.sh ' *** ' "${a[@]}"
one *** two *** three four *** five
$ ./1.sh '\n' "${a[@]}"
one
two
three four
five