아래 주어진 문자열에서 경로 위치를 추출하는 방법.
/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
예상 출력.
/opt/oracle/app/oracle/product/12.1.0/bin
(또는)
/opt/oracle/app/oracle/product/12.1.0/bin/
답변1
쉘의 접미사 제거 기능 사용
str=/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr
path=${str%/*}
echo "$path"
일반적 으로 ${parameter%word}
. 우리의 경우 마지막 슬래시와 다음 문자를 모두 제거하려고 합니다: .word
parameter
/*
위의 결과는 다음과 같습니다.
/opt/oracle/app/oracle/product/12.1.0/bin
디렉터리 이름 사용
디렉토리 이름경로에서 마지막 구성 요소를 제거하는 데 사용할 수 있습니다.
$ dirname -- "$str"
/opt/oracle/app/oracle/product/12.1.0/bin
답변2
start cmd:> dirname "/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
/opt/oracle/app/oracle/product/12.1.0/bin
file_path="/opt/oracle/app/oracle/product/12.1.0/bin/tnslsnr"
dir_path_woslash="${file_path%/*}"
echo "$dir_path_woslash"
/opt/oracle/app/oracle/product/12.1.0/bin
shopt -s extglob
dir_path_wslash="${file_path%%+([^/])}"
echo "$dir_path_wslash"
/opt/oracle/app/oracle/product/12.1.0/bin/