클립보드의 내용을 표시하지 않고 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
인수에서 공백과 연결된 셸 코드의 결과를 평가합니다. 따라서 여기서는 pbpaste
with 명령 replacement 의 출력을 가져 $(...)
와서 분할되지 않도록 따옴표를 넣은 다음 인수로 전달합니다 eval
( --
인수가 다음으로 시작하는 경우 이전 인수는 옵션의 끝을 표시합니다 -
).
source
첫 번째 인수로 전달된 파일에 저장된 쉘 코드를 평가합니다. 를 사용하여 source /dev/stdin
표준 입력에서 읽을 수 있는 코드를 평가하도록 지시합니다. 이 경우 표준 입력은 파이프이고 pbpaste
다른 쪽 끝에 출력이 있습니다.
에서는 eval | $(pbpaste)
파이프로 연결된 두 개의 명령을 실행하고 있습니다. 첫 번째 항목 eval
에는 매개변수가 없으므로 아무것도 계산하지 않으므로 파이프에 아무것도 인쇄되지 않습니다. 두 번째 것은 출력을 가져와서 pbpaste
분할 하고 간단한 명령의 결과 단어를 생성하여 $IFS
구성 됩니다.
표시된 코드를 사용하면 명령이 export
, , , 를 인수로 실행하게 되므로 이 경우에도 작동할 것입니다(해당 , , 변수는 내보내지지만 변수도 내보냅니다). 발생한 오류는 해당 특정 입력으로 설명할 수 없습니다.FOO=BAR
export
BAR=BIZ
export
BAZ=FOO
FOO
BAR
BAZ
export