내 입력 변수에 $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)}")