小编baa*_*ago的帖子

动态转义变量

我正在编写一个名称帮助脚本来自动设置"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 中作为命令处理,它需要转义字符(假设用户实际上以正确的结构写入了新名称)。有没有办法做到这一点?最好尽可能不依赖。

shell-script json

3
推荐指数
1
解决办法
58
查看次数

标签 统计

json ×1

shell-script ×1