[英]Using awk within bash
我正在讀取ldd
,並且從中提取了以下代碼:
major=$(awk "\\$2==\"$module\" {print \\$1}" /proc/devices)
我知道這只班輪在做什么,我不知道為什么在其中使用轉義符\\
。 誰能向我解釋?
shell變量$module
必須插入到awk
腳本中,因此該程序不能用單引號引起來。 這意味着必須使用反斜杠保護外殼程序專用的任何字符。
如果作者願意,則代碼可以這樣編寫:
major=$(awk -v module=$module '$2 == module { print $1 }' /proc/devices)
測試原始代碼(在將= =
固定為==
,由於出現了兩個反斜杠,所以我得到了錯誤;它們不是必需的。單個反斜杠就足夠了,例如:
major=$(awk "\$2==\"$module\" {print \$1}" /proc/devices)
該命令行的作者應該使用單引號(')而不是雙引號(“)。否則,他需要用Shell特殊字符加引號,以便將它們傳遞給awk-command。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.