Bash
echo $ 和變數
我正在嘗試列印最後一個目錄,如下所示
#!/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 /
哪個輸出
b
。dirc
請注意,如果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 的輸出作為執行命令。