将输出转换为键值对



我有一个脚本(我没有编辑权限(,可以输出服务器是否启动。本质上输出CCD_ 1或CCD_。

我如何将let say true的输出转换为像server_up=trueserver_up=false这样的键值对。我尝试使用awk '{print $0},但没有走多远。不太确定如何在字符串前面加前缀。

感谢任何见解团队!

如果输出仅为truefalse,对于一台服务器,可以将其直接分配给变量。

server_up=$( prog.sh some arg list )

如果你需要一个k=v对,

printf "server_up=%sn" $( prog.sh some arg list )

显然,您必须运行程序本身才能获得输出,但不需要awk

如果您只是想要使用awk

prog.sh your args | awk '{ print "server_up="$0 }'

true0、

prog.sh your args | sed 's/^/server_up=/'

如果可能有空间需要清理,那么

prog.sh your args | sed 's/^ */server_up=/'

prog.sh your args | sed -E 's/^s*(S+)s*$/server_up=1/'

只需输出前面有=的变量即可。

printf server_up=
prog.sh your args

在ProcSub 中使用内置read命令

#!/usr/bin/env bash
read -r value < <(script_that_generates_the_output)
server_up=$value

回答这个问题:

我如何将let say true的输出转换为键值对,如server_up=true或server_up=false。

#!/usr/bin/env bash
read -r value < <(script_that_generates_the_output)
case "$value" in
true) server_up=true;;
false) server_up=false;;
esac

case语句很可能是多余的。

最新更新