ฉันไม่สามารถนึกถึงยูทิลิตี้เดียวที่จะทำสิ่งที่คุณอธิบายได้ แต่มันก็ง่ายพอที่จะทำให้มันเป็นตัวอย่างของเชลล์
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
นี่ถือว่าสคริปต์เป็นไฟล์ข้อความ ไม่สนับสนุนไบต์ Null: ขึ้นอยู่กับเชลล์พวกมันอาจถูกลบออกหรืออาจทำให้บรรทัดหรือไฟล์ทั้งหมดถูกตัดทอน บรรทัดใหม่ทั้งหมดที่ท้ายไฟล์จะถูกลบออก (โครงสร้าง 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 ในอินพุตซึ่งอาจเป็นอันตรายถึงชีวิต (ตัวอย่างเช่นในกรณีของสคริปต์ที่แตกไฟล์ด้วยตนเอง)