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
问题是我只想要普通的以太网...不像ifcfg-eth0.0
和ifcfg-eth1:1
这种类型的逗号以及DOT分隔的字符串。
答案 0 :(得分:1)
像ls /etc/sysconfig/network-scripts/ifcfg-eth[0-9]
这样的东西不够吗?
答案 1 :(得分:0)
你可以这样做:
# enable extender pattern matching
shopt -s extglob
for interfaceFile in /etc/sysconfig/network-scripts/ifcfg-eth+([0-9])
请注意,此处不需要ls
。 shell将扩展文件名。
答案 2 :(得分: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
,...),如果您真的在配置文件的完整路径之后相应地调整变量名称。