스크립트의 명령에 개행 문자를 전달하는 방법은 무엇입니까?

스크립트의 명령에 개행 문자를 전달하는 방법은 무엇입니까?

주어진 구분 기호로 인수를 연결하는 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

관련 정보