$-
เป็นแฟล็กตัวเลือกปัจจุบันที่กำหนดโดยเชลล์เองในการเรียกใช้หรือใช้set
คำสั่ง builtin:
$ echo $-
himBH
$ set -a
$ echo $-
ahimBH
"${-#*i}"
เป็นไวยากรณ์สำหรับการลบสตริง: (จากเอกสารประกอบ POSIX )
$ {พารามิเตอร์ # [คำ]}
ลบคำนำหน้ารูปแบบที่เล็กที่สุด คำนั้นจะถูกขยายเพื่อสร้างรูปแบบ จากนั้นการขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์โดยส่วนที่เล็กที่สุดของคำนำหน้าตรงกับรูปแบบที่ถูกลบ หากมีอยู่คำจะไม่ขึ้นต้นด้วย '#' ที่ไม่มีเครื่องหมาย
$ {พารามิเตอร์ ## [คำ]}
ลบรูปแบบคำนำหน้าใหญ่ที่สุด คำนั้นจะถูกขยายเพื่อสร้างรูปแบบ จากนั้นการขยายพารามิเตอร์จะส่งผลให้เกิดพารามิเตอร์โดยส่วนที่ใหญ่ที่สุดของคำนำหน้าตรงกับรูปแบบที่ถูกลบ
ดังนั้น${-#*i}
ลบสตริงที่สั้นที่สุดจนถึงi
ตัวแรก:
$ echo "${-#*i}"
mBH
ในกรณีของคุณif [ "${-#*i}" != "$-" ]
ตรวจสอบว่าเปลือกของคุณเป็นแบบโต้ตอบหรือไม่