如何从字符串中截取最后一个“/script.sh”部分?

如何从字符串中截取最后一个“/script.sh”部分?

我怎样才能修改这个输入:

/home/USER/Desktop/script.sh

对此输出:

/home/USER/Desktop/

...使用bashperl

当然script.sh可以是任何东西:(例如scrasdfipt.sh,等)以及它之前的路径可以是任何东西。

答案1

dirname /home/USER/Desktop/script.sh

答案2

为了精确的问题,你可以使用

printf "$(dirname /home/USER/Desktop/script.sh)/"

我猜这是一个XY问题,并且您想要引用其中的文件与当前脚本相同的目录。如果是这样:

current_dir="$(dirname -- "$0")"

此时你可以做类似的事情

source "${current_dir}/foo.sh"
echo foo > "${current_dir}/bar.txt"

答案3

使用bash:

$ dirname -- "$string"

你也可以用同样的方式得到最后一点,如下所示:

$ basename -- "$string"

答案4

除了dirname建议,您还可以使用删除 subbstring参数扩展:

dir=/home/USER/Desktop/script.sh
echo ${dir%/*}
/home/USER/Desktop

相关内容