Я не можу придумати жодної утиліти, яка б зробила те, що ви описуєте, але досить просто зробити фрагмент оболонки.
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 додає одну задню частину). Зазвичай це не є проблемою для сценарію, але це може бути, наприклад, якщо сценарій закінчується архівом у двійковому форматі, який він витягує. Це не дуже надійний спосіб розповсюдження файлу, оскільки існує значний ризик неправильного кодування такого бінарного сценарію в якийсь момент. Тим не менш, ви можете впоратися з цим, записавши сценарій у тимчасовий файл.
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 у вхідних даних, що може бути фатальним (наприклад, у випадку саморозпаковування сценарію).