[英]'\' 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.