Não consigo pensar em um único utilitário que faça o que você descreve, mas é fácil torná-lo um fragmento de shell.
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
Isso pressupõe que o script é um arquivo de texto. Bytes nulos não são suportados: dependendo do shell, eles podem ser removidos ou podem fazer com que uma linha ou todo o arquivo seja truncado. Também todas as novas linhas no final do arquivo são removidas (a construção heredoc adiciona uma de volta). Isso normalmente não é um problema para um script, mas pode ser, por exemplo, se o script terminar com um archive em formato binário que ele extrai. Essa não é uma maneira muito confiável de distribuir um arquivo, pois há um risco significativo de que um script binário seja equivocado em algum momento. No entanto, você pode manipulá-lo escrevendo o script em um arquivo temporário.
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"