[英]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.