파라미터 또는 파이프에서 입력을받는 Bash 기능

인수 또는 파이프에서 입력을 받아 들일 수있는 방식으로 다음 bash 함수를 작성하고 싶습니다.

b64decode() {
    echo "$1" | base64 --decode; echo
}

원하는 사용법 :

$ b64decode "QWxhZGRpbjpvcGVuIHNlc2FtZQ="
$ b64decode < file.txt
$ b64decode <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ="
$ echo "QWxhZGRpbjpvcGVuIHNlc2FtZQ=" | b64decode



답변

/dev/stdin표준 입력에서 읽을 수 있습니다

b64decode()
{
    if (( $# == 0 )) ; then
        base64 --decode < /dev/stdin
        echo
    else
        base64 --decode <<< "$1"
        echo
    fi
}
  • $# == 0 명령 줄 인수 수가 0인지 확인
  • base64 --decode <<< "$1"하나 herestring를 사용 echo하고 배관 하는 대신 사용할 수도 있습니다.base64

답변

Sundeep의 대답base64유틸리티가 여러 줄을 지원하지 않기 때문에 효과가 있습니다. 보다 일반적인 경우에 대한보다 일반적인 수정

같은 것입니다

my_function() {
    if (( ${#} == 0 )) ; then
        while read -r line ; do
            target_utility "${line}"
        done
    else
        target_utility "${@}"
    fi
}


답변