เรียกใช้สคริปต์ทุบตี


0

มีสคริปต์ง่าย ๆ :

echo "file: $0"

เมื่อถูกเรียกเช่นนั้น:

ทุบตี myscript.sh

หรือ

./myscript.sh

ให้ชื่อไฟล์ของสคริปต์ ( file: myscript.sh) ตามที่คาดไว้ แต่เมื่อเรียกใช้:

แหล่ง myscript.sh

หรือ

. ./myscript.sh

ให้ชื่อเชลล์ ( bash) แทนชื่อไฟล์สคริปต์

ทำไมถึงเป็นเช่นนี้

คำตอบ:


2

การเรียกครั้งแรกจะเริ่มต้นอินสแตนซ์ใหม่ของ bash เพื่อแปลสคริปต์ซึ่งหมายความว่า bash จะถูกตั้งค่า$0เป็นพา ธ

การเรียกครั้งที่สองจะถือว่าไฟล์เป็นไฟล์ที่เรียกใช้งานได้และจะเรียกใช้ดังนั้น$0จะชี้ไปที่ไฟล์นั้น

การเรียกสองครั้งหลังจะโหลดไฟล์ลงในอินสแตนซ์ปัจจุบันของ bash ดังนั้น$0จะชี้ไปที่นั่น

หมายเหตุ: # 2 ต้องการไฟล์ที่สามารถเรียกใช้งานได้, # 1, # 3 และ # 4 ไม่


1
# 1 ไม่ต้องการไฟล์ที่จะเรียกใช้งานได้มีเพียง # 2 เท่านั้น
Eric Renouf

การอ่านอย่างละเอียดมากขึ้นจะช่วยได้ - ขอบคุณสำหรับการจับ!
Eugen Rieck
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.