No puedo pensar en una sola utilidad que haga lo que usted describe, pero es bastante fácil convertirlo en un 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
Esto supone que el script es un archivo de texto. Los bytes nulos no son compatibles: dependiendo del shell, pueden eliminarse o pueden hacer que una línea o todo el archivo se trunque. También se eliminan todas las líneas nuevas al final del archivo (la construcción heredoc agrega una de nuevo). Esto normalmente no es un problema para un script, pero podría ser, por ejemplo, si el script termina con un archivo en formato binario que extrae. Esta no es una forma muy confiable de distribuir un archivo, ya que existe un riesgo significativo de que tal script binario se codifique erróneamente en algún momento. No obstante, puede manejarlo escribiendo el script en un archivo temporal.
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"
$()
debe ser citado en la primera línea. Además, esto eliminaría los caracteres NUL en la entrada, lo que podría ser fatal (por ejemplo, en el caso de un script autoextraíble).