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