簡體   English   中英

單引號中的'\\'反斜杠在shell腳本linux中給出了不可預測的輸出

[英]'\' backslash in single quotes giving unpredictable output in shell script linux

以下兩個命令的輸出相同:

echo 'my\name' | grep 'my\\name'
my\name

並且下一個命令的輸出也是相同的,

echo 'my\name' | grep 'my\\\name'
my\name

任何人都可以指導為什么它導致相同的輸出? 為什么額外的反斜杠也不會影響輸出的任何變化?

但是,如果我們在grep中將反斜杠的數量增加到4,那么輸出會消失,

echo 'my\name' | grep 'my\\\\name'

沒有輸出

請引導我使用單引號和雙引號中的grep和反斜杠的行為。

在前兩個示例中,它是匹配的,因為在您的正則表達式模式中的\\\\匹配輸入中的單個\\ 第二個示例中的額外\\只是轉義n並在輸入中匹配文字n

這些例子很清楚:

echo 'myname' | grep 'my\name'
myname

echo 'myname' | grep 'myna\me'
myname

echo 'myname' | grep 'm\yn\am\e'
myname

echo 'my\name' | grep 'my\name'

echo 'my\name' | grep 'my\\name'
my\name

echo 'my\name' | grep 'my\\\name'
my\name

echo 'my\name' | grep 'my\\\nam\e'
my\name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM