gpt4 book ai didi

linux - 当直接从终端运行时,Bash 脚本不会为命令打印相同的输出

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:41 33 4
gpt4 key购买 nike

我正在尝试从脚本运行相同的 awk 命令,但我得到一个额外的 false 我不确定它是否来自但是当我从终端运行命令时它不返回 false ?

获取状态.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

最佳答案

反斜杠需要在反引号中转义,有些shell也要求在其中转义$。要么这样做:

#                            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

关于linux - 当直接从终端运行时,Bash 脚本不会为命令打印相同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259157/

33 4 0
文章推荐: linux - 变量没有传递到远程机器
文章推荐: CSS 页脚链接不会变为白色
文章推荐: linux - "systemctl restart"和 "systemctl start"有什么区别?
文章推荐: html - 使用 CSS 将图像定位在以下
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com