我想設置一個變量到路徑中的最後一個東西,但似乎無法弄清楚如何去做。現在,我有這個,但它不工作:Bash設置一個變量來削減其他變量
path=echo pwd
last=echo $path | rev | cut -d/-f 1 | rev
因此,例如,如果路徑是〜/一/二/三,我想最後被設置爲三個。 現在,每當我運行echo $last
時,所有輸出的都是空行。
任何人都可以幫忙嗎?謝謝!
我想設置一個變量到路徑中的最後一個東西,但似乎無法弄清楚如何去做。現在,我有這個,但它不工作:Bash設置一個變量來削減其他變量
path=echo pwd
last=echo $path | rev | cut -d/-f 1 | rev
因此,例如,如果路徑是〜/一/二/三,我想最後被設置爲三個。 現在,每當我運行echo $last
時,所有輸出的都是空行。
任何人都可以幫忙嗎?謝謝!
什麼你問的是所謂command substitution:
last=$(pwd | rev | cut -d/-f 1 | rev)
echo "$last"
你也可以實現同樣的事情用簡單的awk命令,也像下面
last=`echo $PWD | awk -F "/" '{print $NF}'`
echo $last
或使用SED剝除/第一然後打印最後一個目錄名稱
last=`echo $PWD | sed 's/\// /g' | awk '{print $NF}'`
echo $last
變量PWD已經填滿,所以你c一個做
last=${PWD##*/}
echo "${last}"
這個語法對我來說是新的,所以我查了一下。大括號(「{}」)表示外殼擴展。 '##'會影響擴展的發生。 ##'擴展爲模式後,如果擴展變量的開始匹配,它將被刪除。雙'##'表示刪除最長的匹配部分;一個'#'刪除最短的部分。在這種情況下,它匹配'* /',因此所有內容都包含最後一個斜槓,只留下當前目錄名稱。 [這裏有更多信息。](http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion)謝謝! –