ฉันเขียนคำสั่งต่อไปนี้เพื่อให้ตรงกับ $ a กับ $ b แต่เมื่อค่ารวมถึง "-" แล้วฉันได้รับข้อผิดพลาด ฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร
# a="-Xmx5324m"
# b="-Xmx5324m"
#
#
# echo "$a" | grep -Fxc "$b"
grep: conflicting matchers specified
โดยวิธีการที่คุณต้องการจับคู่ regex หรือคุณต้องการทดสอบว่าสตริงเท่ากับ (หรือ substring ของ) สตริงอื่นหรือไม่ ในกรณีนั้นเชลล์ในตัว
—
Uwe
[[ ... ]]
หรือcase
จะเป็นตัวเลือกที่ดีกว่าเนื่องจากคุณหลีกเลี่ยงทั้งนิสัยecho
และกระบวนการลูก
ไม่ว่าจะเป็นสตริงเท่ากับนี่คือการทดสอบของฉัน
—
yael
อีกทางเลือกหนึ่งที่คุณไม่ควรใช้ที่ไม่มีใครอยู่ในรายการ: เป็นไปได้ที่จะหลบเส้นประในสตริงที่ยกมาดังนั้นจึงเข้าใจได้
—
แอรอน
grep
ว่าเป็นตัวอักษรมากกว่าที่จะเริ่มตัวเลือกเช่นecho test-test | grep "\-test"
จะจับคู่มากกว่าบ่นเรื่อง-t
ธงที่ไม่รู้จัก
grep -Fxc -- "$b" <<< "$a"
เพื่อหลีกเลี่ยงการไปป์ที่ไม่จำเป็น