给定如下路径:
/data/mirrors/third-party/centos/5/projectA/x86_64
/data/mirrors/third-party/centos/5/projectA/i386
/data/mirrors/third-party/centos/5/projectA/noarch
/data/mirrors/third-party/centos/4/projectB/x86_64
/data/mirrors/third-party/centos/4/projectB/i386
/data/mirrors/third-party/centos/4/projectB/noarch
/data/mirrors/third-party/centos/4/projectC/x86_64
/data/mirrors/third-party/centos/4/projectC/i386
/data/mirrors/third-party/centos/4/projectC/noarch如何使用Bash shell命令从字段5和7 ('5‘和'x86_64')获取值?
到目前为止,我已经有了这样的东西,但我正在寻找更优雅的东西,并且不需要捕获“垃圾*”:
cd /data/mirrors/third-party/centos/5/project/x86_64
echo `pwd` | tr '/' ' ' | while read junk1 junk2 junk3 junk4 version junk5 arch; do
echo version=$version arch=$arch
done
version=5 arch=x86_64发布于 2010-09-25 04:07:19
您可以使用IFS和数组将目录拆分为其组件:
#!/bin/bash
saveIFS=$IFS
IFS='/'
dirs=($(pwd))
IFS=$saveIFS
version=${dirs[5]}
arch=${dirs[7]}发布于 2010-09-25 03:45:46
这对我来说很有效:
pwd | awk -F'/' '{print "version=" $6 " arch=" $8}'发布于 2010-09-25 04:07:12
> p=$(pwd)
> echo $p
/data/mirrors/third-party/centos/5/projectA/x86_64
> basename ${p}
x86_64
> basename ${p%/*/*}
5您还可以使用以下内容:
echo `expr match "$p" '<regular-expression>'`...perhaps有人可能会帮助我处理那个正则表达式;)
https://stackoverflow.com/questions/3790370
复制相似问题