ฉันมีบรรทัดนี้ในของฉัน.bashrc
และฉันต้องการที่จะรู้ว่าสิ่งนี้หมายถึงอะไร
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
ฉันมีบรรทัดนี้ในของฉัน.bashrc
และฉันต้องการที่จะรู้ว่าสิ่งนี้หมายถึงอะไร
# If not running interactively, don't do anything
[[ $- != *i* ]] && return
คำตอบ:
$-
หมายถึง 'ธงปัจจุบัน'echo $-
ส่งคืน "himBH" นั่นคือค่าเริ่มต้นทั้งหมด[[ $- != *i* ]] && return
จริง ๆ แล้วสิ่งที่กล่าวข้างต้นในข้อคิดเห็น: ตรวจสอบว่ามีการตั้งค่าสถานะการโต้ตอบ [[และ]] ทำให้มันเป็นบูลีนดังนั้นมันจึงกลายเป็น "จริง" หรือ "เท็จ" "false && return" ทำให้ดำเนินต่อไป "true && return" ทำให้ดำเนินการส่งคืนธงเริ่มต้นอธิบายในรายละเอียดเพิ่มเติม:
h ใช้สำหรับ "hash all": เป็นการบอก bash ให้จดจำตำแหน่งของคำสั่งที่พบผ่านการสอบถาม PATH ของคุณ
ฉันใช้สำหรับ "แบบโต้ตอบ": ป้อนอินพุตและรับเอาต์พุตกลับ
m ใช้สำหรับ "มอนิเตอร์": เป็นการควบคุมงาน
B สำหรับ "รั้งขยาย" สิ่งนี้ช่วยให้คุณใช้การขยายรั้ง
H ใช้สำหรับ "การขยายประวัติ" นี่คือสิ่งที่ช่วยให้คุณสามารถรันคำสั่งอีกครั้งจากประวัติของคุณโดยการใส่หมายเลขของมันล่วงหน้าด้วยเครื่องหมายอัศเจรีย์
ยังไงซะ. ฉันมี ...
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
โดยทั่วไปแล้วฉันจะถือว่าเหมือนกัน แต่อ่านง่ายกว่า
โดยทั่วไปหมายถึง "ถ้าแฟล็กเชลล์ไม่มีตัวพิมพ์เล็ก i ให้หยุดการทำงาน / สคริปต์ที่นี่"
[[ ]]
หมายถึงการแสดงออกตามเงื่อนไขในทุบตี
$-
หมายถึงธงเปลือก มันจะมี "i" ถ้าเชลล์เป็นแบบโต้ตอบ (เช่น. คุณสามารถพิมพ์คำสั่งซึ่งตรงข้ามกับมันกำลังรันสคริปต์)
!=
ก็หมายความว่า "ไม่เท่ากับ"
*i*
เป็นรูปแบบไวด์การ์ดที่ตรงกับสิ่งที่มี "i"
return
ไม่มีข้อโต้แย้งใด ๆ เพียงแค่หมายถึงหยุดการดำเนินการของฟังก์ชั่นปัจจุบันหรือสคริปต์
&&
เป็นตรรกะและผู้ประกอบการ การแสดงออกทางด้านขวาในกรณีนี้return
จะได้รับการประเมินผล (ดำเนินการ) ถ้าการแสดงออกทางด้านซ้ายที่เป็นจริง ดังนั้นในภาษาการเขียนโปรแกรมหลาย ๆ ภาษานั้นa && b
เป็นสิ่งที่จดย่อif a then b
- นี่เรียกว่า "การประเมินการลัดวงจร" และมันทำให้ครูการเขียนโปรแกรมใช้งานอย่างบ้าคลั่งเมื่อคุณใช้มัน: D
ฉันจะสมมติว่ามันเหมือนว่า: ถ้าทุบตีไม่ได้เปิดในเชลล์แบบโต้ตอบแล้วไม่ทำอะไรเลย
ฉันไม่ทราบฟังก์ชันทั้งหมด แต่อาจมีคำสั่งและแฟล็กตั้งอยู่ด้านล่างบรรทัดนั้นในกรณีที่คุณเปิดทุบตีใน TTY
$-
และ*i*
และวิธีการที่ไม่ได้หาว่าโหมดโต้ตอบหรือไม่