【问题标题】:Applying sed in bash variable and assigning it to another [duplicate]在bash变量中应用sed并将其分配给另一个[重复]
【发布时间】:2021-07-27 07:10:50
【问题描述】:

我有:

MY_FOLDER=`jq '.results_folder' ./conf.json`

FOLDER_WITHOUT_QUOTES=$MY_FOLDER | sed 's/"//g'

python my_code.py > $FOLDER_WITHOUT_QUOTES/log.log

所以,有一个带有文件夹名称的json 文件。但是jsons 要求strings 在里面"。使用 bash 读取 json 会返回 ",我想删除它

将其传递给变量然后应用sed 不起作用。这样做的正确语法是什么?

谢谢!

【问题讨论】:

  • 您可以为此使用jq -r

标签: bash sed


【解决方案1】:

Posix shell 需要:

FOLDER_WITHOUT_QUOTES="$(printf '%s\n' "$MY_FOLDER" | sed 's/"//g')"

使用 Bash,您可以使用 here-document 语法:

FOLDER_WITHOUT_QUOTES=$(sed 's/"//g' <<< "$MY_FOLDER")

...您甚至可以通过特殊替换来摆脱对sed 的调用:

FOLDER_WITHOUT_QUOTES=${MY_FOLDER//\"}

注意:使用$(command) 语法优于可读性较差且不易嵌套的反引号。

【讨论】:

  • @oguzismail 谢谢。我的意思是Posix。答案已更新。
猜你喜欢
  • 2018-07-20
  • 2021-04-07
  • 2021-05-24
  • 2015-09-12
  • 2018-12-18
  • 2023-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多