参见英文答案 > I just assigned a variable, but echo $variable shows something else 6个
如何从grep中获取结果以在bash脚本中自行打印?
例如:
$whois x.x.85.72 | grep 'OrgName\|NetRange\|inetnum\|IPv4'
NetRange: x.x.85.64 - x.x.85.95
NetRange: x.x.0.0 - x.x.255.255
OrgName: xxxxx Technologies Inc.
在bash中使用相同的grep命令时,它会在一行上打印出来.
我的bash脚本的输出:
$lookup xx.com
xx.com resolves to: x.x.85.72
NetRange: x.x.85.64 - x.x.85.95 NetRange: x.x.0.0 - x.x.255.255 OrgName:xxxxx Technologies Inc.
我的bash脚本:
#! /bin/bash
VAR1="$1"
IP=`net lookup $VAR1`
echo $VAR1 resolves to: $IP
RANGE=`whois $IP | grep 'OrgName\|NetRange\|inetnum\|IPv4'`
echo $RANGE
除了解决方案,谁能告诉我为什么这样做?
谢谢你!
解决方法:
您需要引用变量以保留格式:
echo "$RANGE"
代替
echo $RANGE
全部一起:
#!/bin/bash <--- be careful, you have an space after ! in your code
VAR1="$1"
IP=$(net lookup $VAR1) #<--- note I use $() rather than ``
echo $VAR1 resolves to: $IP
RANGE=$(whois $IP | grep 'OrgName\|NetRange\|inetnum\|IPv4')
echo "$RANGE"
例
鉴于这种:
$date; date
Wed Sep 25 15:18:39 CEST 2013
Wed Sep 25 15:18:39 CEST 2013
让我们打印带有和不带引号的结果:
$myvar=$(date; date)
$echo $myvar
Wed Sep 25 15:18:45 CEST 2013 Wed Sep 25 15:18:45 CEST 2013
$echo "$myvar"
Wed Sep 25 15:18:45 CEST 2013
Wed Sep 25 15:18:45 CEST 2013
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。