나는 당신이 묘사 한 것을 할 수있는 단일 유틸리티를 생각할 수 없지만 쉘 스 니펫을 만드는 것은 쉽습니다.
script=$(curl -s "$url")
printf "%s\nDo you want to run this script? [yN]" "$script"
read line
case $line in
[Yy]|[Yy][Ee][Ss]) sh -c "$script";;
esac
스크립트가 텍스트 파일이라고 가정합니다. 널 바이트는 지원되지 않습니다. 쉘에 따라 제거되거나 행 또는 전체 파일이 잘릴 수 있습니다. 또한 파일 끝의 모든 줄 바꿈이 제거됩니다 (heredoc 구문은 다시 줄 바꿈). 일반적으로 스크립트에는 문제가되지 않지만, 예를 들어 스크립트가 2 진 형식의 아카이브로 압축을 푼 경우 일 수 있습니다. 이진 스크립트가 언젠가 잘못 인코딩 될 위험이 크기 때문에 파일을 배포하는 매우 안정적인 방법은 아닙니다. 그럼에도 불구하고 스크립트를 임시 파일에 작성하여 처리 할 수 있습니다.
script_file=$(mktemp)
curl -s "$url" | tee "$script_file"
printf "Do you want to run this script? [yN]"
read line
case $line in
[Yy]|[Yy][Ee][Ss]) sh "$script_file";;
esac
rm "$script_file"
$()
첫 줄에 인용해야합니다. 또한 이것은 입력에서 NUL 문자를 제거하여 치명적일 수 있습니다 (예 : 자동 압축 풀기 스크립트의 경우).