我写了一个小脚本,用awk'split'命令获取当前目录名。
echo $ PWD
由于拆分操作,我需要将'8'替换为令牌数。 //如果PWD = / home / username / bin。我想把“bin”打包成包。
package="`echo $PWD | awk '{split($0,a,"/"); print a[8] }'`"
echo $package
你能否告诉我用什么代替'print a [8]'来使脚本适用于任何目录路径?
-Sachin
答案 0 :(得分:5)
你不需要awk。如果你总是想要路径中的最后一个dir:
#!/bin/sh
cur_dir="${PWD##*/}/"
echo "$cur_dir"
以上具有不为外部二进制文件创建任何子壳和/或叉的附加好处。它是所有原生POSIX shell语法。
答案 1 :(得分:3)
您可以使用print a[length(a)]
,但最好避免拆分并使用自定义字段分隔符和$NF
:
echo $PWD | awk -F/ '{print $NF}'
但在特定情况下,您应该使用basename
:
basename "$PWD"
答案 2 :(得分:1)
其他答案是更好的替代品来执行您想要完成的功能。但是,以下是您问题的具体答案:
package=$(echo $PWD | awk '{n = split($0,a,"/"); print a[n] }')
echo "$package"
split()
返回结果元素的数量。