Bash

echo $ 和變數

  • June 16, 2017

我正在嘗試列印最後一個目錄,如下所示

#!/bin/bash
dirc="/a/b/"
i=3  
`echo "$dirc" | awk -F / '{ print ""$"i"}'`

這應該列印’b’,這沒有發生。

i在 AWK 腳本中是 AWK 變數,而不是 shell 變數;您需要設置 AWK 變數:

#!/bin/bash
dirc="/a/b/"
echo "${dirc}" | awk -F / -v i=3 '{print $i}'

i您可以通過 shell 理解的任何方式指定 的值:

i=3
echo "${dirc}" | awk -F / -v "i=${i}" '{print $i}'

您還可以讓 shell 評估 AWK 腳本中的變數,但這只是在找麻煩:

i=3
echo "${dirc}" | awk -F / "{print \$${i}}"

您可以使用 shell 的字元串操作來獲取目錄的最後一部分,而無需呼叫外部實用程序:

dirc="/a/b/"
dirc=${dirc%/}         # remove trailing / if it is there
echo "${dirc##*/}"     # remove everything up to the last /

哪個輸出bdirc請注意,如果is just ,這將不起作用/,因此basename可能會更好。

或者通過shell 數組按數字獲取一個欄位。

IFS=/ read -a dira <<< "$dirc"   # split to an array
echo "${dira[2]}"                # echo one field, first is 0

順便說一句,您命令中的反引號肯定echo | awk是錯字嗎?有了它們,shell 會將 awk 的輸出作為執行命令。

引用自:https://unix.stackexchange.com/questions/371456