我的输入变量$dirPath
包含目录路径。该操作是为了能够检索目录路径中的最后 N 个值,其中N
通过变量 传递$depth
。对于固定N
值(比如2)我可以通过以下方式实现
subDir=$(echo $dirPath|awk -F "/" '{n= 2; for (--n; n >= 0; n--){ printf "%s/", $(NF-n)} print ""}')
但是,如果我尝试将上述命令中的 2 替换为变量 as n=$depth
,则该subDir
变量为空。那么如何将变量值传递给上面的命令呢?
答案1
如果你想传递一个bash
变量,awk
那么你只需要使用 awk 的-v
参数:
awk -v n=$depth -F "/"...
答案2
由于您正在使用bash
,因此不需要外部工具,例如awk
#read path constituents into array arr
IFS=/ read -ra arr <<<"$dirPath"
n=2
#print the last two
(IFS=/; printf '%s\n' "${arr[*]:(-n)}")