我正在编写一个名称帮助脚本来自动设置"name":
package.json 文件中的字段,以便它匹配某个正则表达式结构,但我在实际设置名称时遇到了一些问题。它必须匹配的正则表达式是'\@abc\/([a-z]+-{0,1})+[a-z]*$'
.
现在我基本上是这样做的(还有一些额外的东西来真正断言遵循命名约定):
pattern='\@abc\/([a-z]+-{0,1})+[a-z]*$'
if [[ ! $name =~ $pattern ]]; then
read -rp "New name: " newName
sed -ri "s/(\s.\"name\"\:\s\").*/\1$newName\",/g" $1/package.json
fi
Run Code Online (Sandbox Code Playgroud)
正如您可能看到的,这里的问题是变量$newName
在 sed 中作为命令处理,它需要转义字符(假设用户实际上以正确的结构写入了新名称)。有没有办法做到这一点?最好尽可能不依赖。