簡體   English   中英

在bash中使用awk

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

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