APP_PORT=`${AWK} -F\" ' \
/org.apache.coyote.tomcat4.CoyoteConnector/ {
getline
print $2
}' ${JBOSS_APP_CFG} 2>/dev/null`
嗨我对所有层次的正则表达式和转义字符都有点失落,所以从我上面发布的代码我特别想了解F之后立即出现的字段分隔符,所以我们想要一个引号,所以我们用它来逃避它反斜杠,但为什么-F后没有空格?为什么org.apache.coyote.tomcat4.CoyoteConnector放在单引号和它周围的斜线之间?
由于
答案 0 :(得分:1)
它在第一个双引号之后分配文本,直到第二个双引号或行尾,从包含org.apache.coyote.tomcat4.CoyoteConnector
的行后面的每一行,从包含存储在JBOSS_APP_CFG
变量中的路径的文件中分配,到APP_PORT
变量。
当awk选项遵循同一参数中的选项字符以及下一个参数时,它们接受值。即-F\"
参数,将值"
赋给选项-F
(字段分隔符)。退格会阻止shell将双引号解释为以双引号开头的字符。
单引号用于防止shell以任何方式解释Awk脚本,将其拆分为空格中的单词并将其作为多个参数提供给Awk,而不是一个。
/org.apache.coyote.tomcat4.CoyoteConnector/
是模式操作语句中的模式部分(操作在大括号内,接下来是)。见http://www.gnu.org/software/gawk/manual/html_node/Patterns-and-Actions.html
模式部分匹配包含org.apache.coyote.tomcat4.CoyoteConnector
的行。操作部分读取下一行并输出其第二个字段(字段由"
分隔。)
答案 1 :(得分:0)
它确实读取存储在变量${JBOSS_APP_CFG}
中的文件
搜索org.apache.coyote.tomcat4.CoyoteConnector
获取下一行并打印归档编号2
然后将其存储在变量APP_PORT
中
-F\"
告诉awk使用"
作为提交的分隔符
你也可以像这样写
awk -v FS='"' (code) file
or
awk (code) FS='"' file
or
awk (code) FS=\" file