繁体   English   中英

来自带有管道、引号等的命令的 Bash 变量

[英]Bash variable from command with pipes, quotes, etc

我有一个用于获取 hostname.localdomain 的命令:

dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'

这很好地返回了如下结果:

michael.lawler.localdomain.com

我想进一步将该结果用作 Bash 脚本中的变量。

看来我在通过第一条管道时遇到了麻烦。

如果我VAR="dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'"

...我取回了整个区域转移。 我还尝试了许多小的更改,在dig命令之前添加$ ,不带引号,但似乎没有任何效果。 我怎样才能解决这个问题?

VAR=$( dig axfr @dc1.localdomain.com localdomain.com |
     grep -i Lawler |
     awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }' )

使用反引号代替引号:

VAR=`dig axfr @dc1.localdomain.com localdomain.com | grep -i Lawler | awk '{ getline ; $1=substr($1,1,length($1)-1); print $1 ; exit }'`

Backtics 实际上的意思是“运行这里的任何内容并将标准输出作为表达式的值返回”,但引号不会这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM