我有一个脚本(我没有编辑权限(,可以输出服务器是否启动。本质上输出CCD_ 1或CCD_。
我如何将let say true的输出转换为像server_up=true
或server_up=false
这样的键值对。我尝试使用awk '{print $0}
,但没有走多远。不太确定如何在字符串前面加前缀。
感谢任何见解团队!
如果输出仅为true
或false
,对于一台服务器,可以将其直接分配给变量。
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 }'
或true
0、
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
语句很可能是多余的。