bashのディレクトリ名から文字列を合成したいのですが。文字列を作成するには、最後の2つのパス名を抽出する必要があります。
たとえば、入力/a/b/c
を使用して、「b_c_HELLO」を作成します。
どうすればbashでそれを行うことができますか?
使用basename
とdirname
:
parent=$(dirname "$input")
output=$(basename "$parent")_$(basename "$input")_HELLO
echo $PATH|awk -F"/" '{print $(NF-1)"_"$NF"_HELLO";}'
パラメータ拡張を活用した純粋なbashの実装:
input="a/b/c"
tmp="${input%%/*/*}"
tmp="${tmp#$tmp/}"
output="${tmp/\//_}_HELLO"