ฉันมีปัญหาแปลก ๆ เกี่ยวกับgrep -vข้อความค้นหา ให้ฉันอธิบาย:
ในการแสดงการเชื่อมต่อฉันใช้who:
$ who
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
กระแสttyของเทอร์มินัลของฉันคือpts/0
$ tty
/dev/pts/0
$ tty | cut -f3-4 -d'/'
pts/0
grep -v $(tty | cut -f3-4 -d'/')ผมพยายามที่จะไม่รวมการเชื่อมต่อของตัวเองโดยใช้ ผลลัพธ์ที่คาดหวังของคำสั่งนี้ควรจะเป็นwhoโดยไม่ต้องเชื่อมต่อของฉัน อย่างไรก็ตามผลลัพธ์ไม่คาดคิดมากที่สุด:
$ who | grep -v $(tty | cut -f3-4 -d'/')
grep: a: No such file or directory
grep: tty: No such file or directory
ฉันใส่$(...)เครื่องหมายคำพูดในและดูเหมือนว่าจะแก้ไขปัญหา "ไม่มีไฟล์หรือไดเรกทอรี" อย่างไรก็ตามการเชื่อมต่อของฉันยังคงถูกพิมพ์แม้ว่า tty ( pts/0) ของฉันควรถูกแยกออก:
$ who | grep -v "$(tty | cut -f3-4 -d'/')"
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
ณ จุดนี้ฉันไม่รู้ว่าทำไมการgrepค้นหาจึงทำงานผิดปกติ
grepไม่ใช่ "tty" คุณจะแนะนำให้ฉันแก้ไขสิ่งนี้อย่างไร
set -xครั้งแรก ... จากนั้นเรียกใช้คำสั่งของคุณและดูสิ่งที่คุณพยายามที่จะgrep...