将return命令存储在数组Shell中

时间:2016-11-07 11:16:02

标签: linux bash shell

我必须将此命令的返回存储到数组中 我试过这个:

my_array=( $(/sbin/ifconfig | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}' | grep -v '127.0.0.1'))

但它给出了以下错误:

  

/ bin:是一个目录

2 个答案:

答案 0 :(得分:0)

您可以删除下面的括号。您还可以使用ip命令,它的新版本以及比ifconfig更强大的功能。

my_array=$(ip addr show  |  grep -Po 'inet \K[\d.]+' | grep -v 127.0.0.1)

答案 1 :(得分:0)

在我的GNU bash 4.4.0(1)中,ifconfig没有给我inet addr:但只是这样:

    inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
    inet 127.0.0.1  netmask 255.0.0.0

在任何情况下,您收到的错误对我都没有意义。

我可以获得结合grep&的IP地址awk这样:

sbin/ifconfig | grep -v "127.0.0.1" |grep 'inet ' |awk -F" " '{print $2}'

(awk -F“”:Field Seperator。我的情况下的Field Seperator是空格。)

这也适用于我,因为127.0.0.1到了最后:

/sbin/ifconfig |grep -m1 'inet '| awk -F" " '{print $2}

(grep -m1 =首场比赛后停止)

PS:如果您计划附加数组,则需要使用my_array + =(...)