如何从下面给定的字符串中提取路径位置。
/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
使用shell的后缀去除功能
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/