我想从 bash 中的目录名合成一个字符串。我需要提取最后两个路径名来创建一个字符串。
例如,使用输入/a/b/c
,我想制作“b_c_HELLO”。
我怎么能用 bash 做到这一点?
echo $PATH|awk -F"/" '{print $(NF-1)"_"$NF"_HELLO";}'
使用basename
和dirname
:
parent=$(dirname "$input")
output=$(basename "$parent")_$(basename "$input")_HELLO
一个利用Parameter Expansion的纯 bash 实现:
input="a/b/c"
tmp="${input%%/*/*}"
tmp="${tmp#$tmp/}"
output="${tmp/\//_}_HELLO"