use*_*333 3 linux bash shell grep
如何从grep中获取结果以在bash脚本中自行打印?
在终端中使用grep时,输出会显示我希望它出现的方式.
例如:
$ 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.
Run Code Online (Sandbox Code Playgroud)
在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.
Run Code Online (Sandbox Code Playgroud)
我的bash脚本:
#! /bin/bash
VAR1="$1"
IP=`net lookup $VAR1`
echo $VAR1 resolves to: $IP
RANGE=`whois $IP | grep 'OrgName\|NetRange\|inetnum\|IPv4'`
echo $RANGE
Run Code Online (Sandbox Code Playgroud)
除了解决方案,谁能告诉我为什么这样做?
谢谢你!
您需要引用变量以保留格式:
echo "$RANGE"
Run Code Online (Sandbox Code Playgroud)
代替
echo $RANGE
Run Code Online (Sandbox Code Playgroud)
全部一起:
#!/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"
Run Code Online (Sandbox Code Playgroud)
鉴于这种:
$ date; date
Wed Sep 25 15:18:39 CEST 2013
Wed Sep 25 15:18:39 CEST 2013
Run Code Online (Sandbox Code Playgroud)
让我们打印带有和不带引号的结果:
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11381 次 |
| 最近记录: |