1
for interfacefile in `ls /etc/sysconfig/network-scripts/ifcfg-eth*`

我的 shell 脚本中有以下 for 循环。现在

ls /etc/sysconfig/network-scripts/ifcfg-eth*
/etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-eth1
/etc/sysconfig/network-scripts/ifcfg-eth0.0  /etc/sysconfig/network-scripts/ifcfg-eth1:1

问题是我只想grep普通以太网......不像 这种类型的逗号ifcfg-eth0.0以及ifcfg-eth1:1 DOT分隔的字符串。

4

3 回答 3

1

像这样的东西还ls /etc/sysconfig/network-scripts/ifcfg-eth[0-9]不够吗?

于 2013-09-16T08:37:16.460 回答
0

POSIX shell 的可移植方式:

for if in /etc/sysconfig/network-scripts/ifcfg-eth*; do
    [ -e "${if}" ] || continue
    if=${if##*/ifcfg-}
    case ${if#eth} in
        *[!0-9]*) continue ;;
    esac
    echo "${if}"
done

如果您真的在配置文件的完整路径之后相应地调整变量名称,这将为您提供接口名称(例如eth0, ...)。eth1

于 2013-09-16T09:11:41.460 回答
0

你可以这样做:

# enable extender pattern matching
shopt -s extglob

for interfaceFile in /etc/sysconfig/network-scripts/ifcfg-eth+([0-9])

请注意,这里不需要ls。shell 将扩展文件名。

于 2013-09-16T08:53:40.647 回答