ฉันมีสคริปต์ง่ายๆดังต่อไปนี้:
#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {1..99..2}
do
echo $i
done
เอาต์พุตในกรณีที่ฉันรันด้วยsh file.sh
:
Bash version ...
{1..99..2}
เอาต์พุตในกรณีที่ฉันรันด้วยbash file.sh
:
Bash version 4.2.25(1)-release...
1
3
5
.
.
.
99
ฉันมีคำถามสองข้อ:
ถ้าฉันเขียนบรรทัด shabang ที่ระบุเชลล์มันไม่ควรรันด้วยการทุบตีว่าฉันใช้
sh file.sh
หรือbash file.sh
ไม่?ฉันเข้าใจว่า
$BASH_VERSION
sh ไม่รู้จัก แต่ปัญหาสำหรับลูปคืออะไร ทำไมไม่พิมพ์ตัวเลข?
dash
ซึ่งตามที่คุณระบุsh
ไว้ในอูบุนตูนั้นไม่ได้มีอยู่เป็นหลัก "เป็นพรอมต์ฉุกเฉินสำหรับสถานการณ์ DIRE" แต่แทนที่จะให้ระบบสามารถทำงานได้และเริ่มต้นอย่างรวดเร็ว . ด้วยวิธีdash
นี้เหมาะอย่างยิ่งที่จะใช้ในระบบปฏิบัติการที่ทันสมัย แต่สิ่งที่เหมาะอย่างยิ่งสำหรับการเป็นสคริปต์ระดับต่ำและรวดเร็วสำหรับการสร้างสคริปต์ - โดยเฉพาะอย่างยิ่งการเรียกใช้สคริปต์ระบบในขณะที่บูตระบบปฏิบัติการขนาดใหญ่ที่ซับซ้อนและทันสมัย ประสิทธิภาพค่าใช้จ่าย