重击替换字符串

时间:2018-07-17 22:02:25

标签: bash

我正在研究一个检查文件是否存在的脚本。如果存在,那么我想得到路线。

我的工作如下:

BusinessArea

这将返回文件的路径:

RESULT_=$(find $PWD -name someRandom.json)

我陷入了在文件之间导航的麻烦。有没有一种方法可以将/Users/guest/workspace/random_repo/random/some_folder/someRandom.json 替换为someRandom.json,所以我可以这样做:

''

我尝试使用here提供的解决方案,但无法正常工作。我尝试了以下方法:

cd /Users/guest/workspace/random_repo/random/some_folder/

这不会返回此类文件或目录。

2 个答案:

答案 0 :(得分:2)

您想要参数扩展,而不是命令替换。

RESULT="${RESULT%/*}/"

答案 1 :(得分:2)

给定:

$ echo "$result"
/Users/guest/workspace/random_repo/random/some_folder/someRandom.json

您可以获得文件名:

$ basename "$result"
someRandom.json

或路径:

$ dirname "$result"
/Users/guest/workspace/random_repo/random/some_folder

或者您可以使用子字符串删除:

$ echo "${result%/*}"
/Users/guest/workspace/random_repo/random/some_folder

或者,给定文件名和完整路径,只需删除文件名:

$ echo "$tgt"
someRandom.json
$ echo "${result%"$tgt"}"
/Users/guest/workspace/random_repo/random/some_folder/

有很多Bash字符串操作的例子:

BashFAQ/100

BashFAQ/073

Bash Hacker's Parameter Expansion

旁注:避免对Bash变量使用CAPITAL_NAMES。根据惯例,它们保留供Bash使用...