zsh 함수는 클립보드에서 여러 변수를 내보냅니다.

zsh 함수는 클립보드에서 여러 변수를 내보냅니다.

클립보드의 내용을 표시하지 않고 zsh에서 클립보드의 내용을 가져오고 평가할 수 있기를 원합니다.

export FOO=BAR
export BAR=BIZ
export BAZ=FOO

나는 노력했다

function aws-eval-clipboard {
    eval | $(pbpaste)
}

우리 정말 가까워진 것 같은데? 하지만 난 이해해

zsh: no such file or directory: export

설치가 필요할 수도 있는 다른 명령을 사용하는 데 전적으로 개방적입니다.

답변1

오히려 다음과 같습니다.

eval -- "$(pbpaste)"

또는:

pbpaste | source /dev/stdin

eval인수에서 공백과 연결된 셸 코드의 결과를 평가합니다. 따라서 여기서는 pbpastewith 명령 replacement 의 출력을 가져 $(...)와서 분할되지 않도록 따옴표를 넣은 다음 인수로 전달합니다 eval( --인수가 다음으로 시작하는 경우 이전 인수는 옵션의 끝을 표시합니다 -).

source첫 번째 인수로 전달된 파일에 저장된 쉘 코드를 평가합니다. 를 사용하여 source /dev/stdin표준 입력에서 읽을 수 있는 코드를 평가하도록 지시합니다. 이 경우 표준 입력은 파이프이고 pbpaste다른 쪽 끝에 출력이 있습니다.

에서는 eval | $(pbpaste)파이프로 연결된 두 개의 명령을 실행하고 있습니다. 첫 번째 항목 eval에는 매개변수가 없으므로 아무것도 계산하지 않으므로 파이프에 아무것도 인쇄되지 않습니다. 두 번째 것은 출력을 가져와서 pbpaste분할 하고 간단한 명령의 결과 단어를 생성하여 $IFS구성 됩니다.

표시된 코드를 사용하면 명령이 export, , , 를 인수로 실행하게 되므로 이 경우에도 작동할 것입니다(해당 , , 변수는 내보내지지만 변수도 내보냅니다). 발생한 오류는 해당 특정 입력으로 설명할 수 없습니다.FOO=BARexportBAR=BIZexportBAZ=FOOFOOBARBAZexport

관련 정보