私の入力変数に$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)}")