Não consigo pensar em um único utilitário que faria o que você descreve, mas é fácil o suficiente para torná-lo um snippet 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 causar uma linha ou todo o arquivo ser truncado. Além disso, todas as novas linhas no final do arquivo são removidas (a construção heredoc adiciona uma volta). Normalmente, isso não é um problema para um script, mas pode ser, por exemplo, se o script terminar com um arquivo no formato binário que ele extrai. Essa não é uma maneira muito confiável de distribuir um arquivo, pois existe um risco significativo de que um script binário seja codificado incorretamente em algum momento. No entanto, você pode lidar com isso 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"
$()
deve ser citado na primeira linha. Além disso, isso removeria caracteres NUL na entrada, o que pode ser fatal (por exemplo, no caso de um script de extração automática).