Bash
awk:列印最後 N 列,其中 N 通過變數傳遞
我的輸入變數
$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
變數為空。那麼如何將變數值傳遞給上述命令呢?
如果你想傳遞一個
bash
變數,awk
那麼你只需要使用 awk 的-v
參數:awk -v n=$depth -F "/"...
由於您正在使用
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)}")