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

用户名

我正在尝试从脚本运行相同的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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bash脚本在doubleclick与在终端中运行时的输出不同

从cron运行时,Perl脚本不会将STDOUT输出到文件

如何在运行时仅从bash脚本中打印某些命令?

脚本运行时如何更改bash脚本输出?

在脚本中运行时,如何使bash输出颜色?

在 docker bash 脚本中运行时找不到命令

作为systemd服务运行时,Python脚本不会写入文件

在bash脚本和终端中运行命令时的不同输出

在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出

运行时命令的每个输出的前缀

从命令行bash运行时,无法从crontab运行bash脚本

在命令行中运行python脚本不会显示任何输出

ffmpeg命令在脚本内静默失败,但在直接运行时有效

从 BUTTON 或 SCRIPTEDITOR 运行时脚本不同

为什么我的 bash 脚本在终端中运行时将此 awk 子字符串命令标记为语法错误?

当 ansible 通过 shell 脚本运行时,我们如何打印 ansible 任务的彩色输出?

如何使用Java运行时打印Python脚本的std输出?

相同的程序在调试和作为脚本运行时得到不同的输出

从脚本运行时,Bash 脚本未正确执行命令

Bash脚本不是从nautilus运行,而是从终端运行

运行包含sed命令的bash脚本不会产生任何结果,只会挂起。为什么?

Invoke-AzureRmVMRunCommand 命令在 powershell 脚本中运行时显示错误的输出

脚本不会运行

MMV不会在bash脚本中执行(仅在由CRON运行时)

从Perl运行时,将bash脚本的输出记录到日志文件和stdout中

使用“&”运行时,Linux终端中缺少segfault输出

bash 脚本。打开新终端并运行命令

grunt:从终端运行时找不到命令

在终端中命令正常运行时,system()失败