我正在尝试使用 awk 将命令链的输出存储在一个变量中,但结果不完整,
这就是我想要做的。
nameserver="nas_server -list all | awk '{print $6}'"
eval $nameserver
nameserverreal=$nameserver |awk '/encap|nameserver_/{ print }'
eval $nameserverreal
我正在使用此命令 nas_server 和 awk print 6,仅从我的命令 nas_server 中获得一些输出。
我需要的是稍后仅使用“nameserver_”过滤输出并将输出存储在变量中,以便我可以打印它,并在以后与其他命令一起使用它。
您似乎将存储命令的输出与存储命令本身的文本混淆(这几乎总是一个坏主意)。我不确定您到底要做什么(或输出结果nas_server -list all
如何),但我怀疑您想要这样的东西:
nameserver="$(nas_server -list all | awk '{print $6}')" # $() captures the output of a command
echo "$nameserver" # Double-quote all variable references to avoid parsing weirdness!
nameserverreal="$(echo "$nameserver" |awk '/encap|nameserver_/{ print }')"
echo "$nameserverreal"
这是一个简化版本:
nameserverreal="$(nas_server -list all | awk '$6 ~ /encap|nameserver_/ {print $6}'"
哦,每当您想eval
在 shell 脚本中使用时,这都表明出现了严重错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句