디버그 셸 매개변수

디버그 셸 매개변수

echo수신된 매개변수를 표시하는 유사한 명령이 있습니까 ?

예를 들어, echo "a b" c디스플레이a b c

하지만 비슷한 것을 보고 싶습니다 "a b" "c".

답변1

예를 들어 다음과 같이 사용할 수 있습니다 printf.

$ printf ">%s<\n" "a b" c
>a b<
>c<

또는 원하는 구분 기호를 사용하세요. 하지만 그렇게 하면 set -x쉘 스타일로 인용된 출력이 생성되지 않습니다. 그리고 항상 형식 문자열을 한 번 이상 인쇄하므로 printf ">%s<\n"다른 인수는 생성되지 않습니다 ><.

또는 Bash에서 쉘 스타일 인용 출력을 얻으십시오.

$ printf "%q\n" "a b" c
a\ b
c

단점은 %q따옴표보다 백슬래시를 선호하므로 출력이 보기 흉하고 필요 이상으로 읽기가 어렵다는 것입니다.

물론 이를 수행하기 위해 외부 스크립트를 만들 수도 있지만 귀하의 경우에는 솔루션이 너무 무거울 수 있습니다.

$ cat args.sh
#/bin/bash
printf "%d args: " "$#"
for x do
    printf "%s " "${x@Q}"   # nicer output than printf %q
done
echo

$ ./args.sh "a b" c
2 args: 'a b' 'c' 

관련 정보