쉘 스크립트에서 매개변수 없이 echo 사용

쉘 스크립트에서 매개변수 없이 echo 사용

나는 다음 bash 스크립트를 발견했습니다회로망주어진 요소 행의 거듭제곱 집합을 인쇄합니다.

p() { [ $# -eq 0 ] && echo || (shift; p "$@") |
        while read r ; do echo -e "$1 $r\n$r"; done }

첫 번째 이후에는 매개변수 &&가 없습니다 echo.

이를 테스트하는 코드는 다음과 같습니다.

p $(echo -e "1\n2\n3")

답변1

서식을 지정하는 데 사용됩니다.

$ p() { [ $# -eq 0 ] && echo || (shift; p "$@") |
>         while read r ; do echo -e "$1 $r\n$r"; done }
$ p $(echo -e "1\n2\n3")
1 2 3
2 3
1 3
3
1 2
2
1

$ p                 

$

p단일 프롬프트와 다음 프롬프트 사이에 빈 줄이 있습니다. 이것은 echo.

이것은 더 읽기 쉽습니다.

p() {
    if [ $# -eq 0 ]; then
        echo
    else
        (shift; p "$@") | while read r;
            do echo -e "$1 $r\n$r";
        done
    fi
}

네가 없으면 안 된다고 말하는 이유는 그게 정말 중요하기 때문이야일부명령이 거기에 있습니다. 그렇지 않으면 논리가 깨질 것입니다(실제로 논리가 약간 이상하긴 하지만).

관련 정보