Bash - เปิดใช้งานการดำเนินการเฉพาะเมื่อสคริปต์ถูกเรียกใช้จากไดเรกทอรีเฉพาะ


0

ฉันต้องเขียนเชลล์สคริปต์ที่สามารถดำเนินการได้หากรันจากโฮมไดเร็กทอรีของผู้ใช้ที่ลงชื่อเข้าใช้ปัจจุบันและฉันไม่รู้ว่าจะตรวจสอบจากสคริปต์ได้อย่างไร ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.


ดูตัวแปร$0ในสคริปของคุณ ..
Cyrus

4
if [ $PWD != $HOME ]; then exit; fi
AFH

1
@AFH คุณควรตอบคำถามนั้น
Ayan

คำตอบ:


3

คุณสามารถใช้ตัวแปรสภาพแวดล้อม PWD และ HOME: $PWDเป็นไดเรกทอรีการทำงานปัจจุบันในขณะที่$HOMEเป็นไดเรกทอรีบ้านของผู้ใช้ปัจจุบัน คุณสามารถนำหน้าคำสั่งที่เรียกใช้งานได้ในสคริปต์ของคุณโดย:

if [ "$PWD" != "$HOME" ]; then exit; fi

คุณสามารถเลือกที่จะเพิ่มรหัสข้อผิดพลาดในexitคำสั่งในกรณีที่การเรียกเชลล์ต้องการตรวจสอบความสำเร็จหรือความล้มเหลวของสคริปต์

อีกตัวแปรที่มีประโยชน์คือ OLDPWD: $OLDPWDเป็นไดเรกทอรีก่อนหน้าก่อนที่จะเปลี่ยนไดเรกทอรีล่าสุด คุณสามารถใช้สิ่งนี้เพื่อให้สคริปต์รันจากที่ใดก็ได้โดยล้อมรอบสคริปต์ด้วย:

cd "$HOME"
. . . . . .
cd "$OLDPWD"

นี่เป็นการสันนิษฐานว่าไม่มีการเปลี่ยนแปลงไดเรกทอรีอื่นในสคริปต์ ถ้าไม่ใช้ครั้งแรกและกลับไปINITPWD="$PWD" $INITPWDในความเป็นจริงในกรณีส่วนใหญ่สคริปต์จะทำงานใน subshell ดังนั้นการเปลี่ยนกลับไปยังไดเรกทอรีเดิมจะไม่จำเป็นเนื่องจากการเริ่มต้นcdจะไม่ส่งผลกระทบต่อเปลือกแม่


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