我正在尝试从脚本运行相同的awk命令,但是我得到一个额外的false,我不确定它是从哪里来的。但是,当我从终端运行命令时,它不会返回false吗?
get_state.sh
#/bin/bash
# sed -n '/\\State/{getline; print}' /var/opt/BESClient/besclient.config
export SERVER_STATE=`awk '/\\State/{getline; print $3}' /var/opt/BESClient/besclient.config`
echo $SERVER_STATE
echo $SERVER_STATE
exit 0
输出
./get_state.sh
false Live
false Live
但
sh-4.1$ awk '/\\State/{getline; print $3}' /var/opt/BESClient/besclient.config
输出
Live
反斜杠需要在反引号中进行转义,并且某些壳也需要在反引号$
中进行转义。可以这样做:
# vv-- here --------------v
export SERVER_STATE=`awk '/\\\\State/{getline; print \$3}' /var/opt/BESClient/besclient.config`
或$()
改为使用:
export SERVER_STATE=$(awk '/\\State/{getline; print $3}' /var/opt/BESClient/besclient.config)
在false
来自包含行之后的行的第三个字段State
(但不是\State
),他们出现在同一行,而不是两个,是因为$SERVER_STATE
是加引号的
echo $SERVER_STATE
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句