Se você quiser passar uma variável bash
para awk
, então tudo que você precisa é usar o parâmetro -v
do awk:
awk -v n=$depth -F "/"...
Minha variável de entrada $dirPath
contém o caminho do diretório. A ação é conseguir recuperar os últimos N valores no caminho do diretório, onde N
é passado por meio de uma variável $depth
. Para um valor fixo de N
(digamos 2), eu posso conseguir isso através de
subDir=$(echo $dirPath|awk -F "/" '{n= 2; for (--n; n >= 0; n--){ printf "%s/", $(NF-n)} print ""}')
No entanto, se eu tentar substituir 2 no comando acima por uma variável como n=$depth
, a variável subDir
estará vazia. Então, como posso passar um valor variável para o comando acima?
Como você está usando bash
, não há necessidade de ferramentas externas, como awk
#read path constituents into array arr
IFS=/ read -ra arr <<<"$dirPath"
n=2
#print the last two
(IFS=/; printf '%s\n' "${arr[*]:(-n)}")
Tags bash awk shell shell-script