【发布时间】:2020-03-05 18:57:12
【问题描述】:
我正在尝试从 Git 获取单个文件。当我使用硬编码值运行我的 git 命令时,它可以工作。但是,当我使用变量运行它时,它会中断。我怀疑这是由于以某种方式在我的变量周围放置了双引号。我尝试了许多命令来从字符串中删除双引号,但它们似乎都不起作用。
我基本上是想在我的 git 命令中使用 filePath 变量,周围没有双引号。
#!/usr/bin/env bash
#reads the JSON value of the file-path key.
#file path key is "home/docs" (quotes included)
filePath=$(grep -o '"file-path": *"[^"]*"' ../package.json | grep -o '"[^"]*"$')
git archive --remote=git@git.SOME_URL.com:help/docs.git HEAD $filePath | tar -x
【问题讨论】:
-
停止使用
grep解析JSON。使用像jq这样为JSON设计的工具,并且知道如何生成你想要的原始字符串。filePath=$(jq -r '.file_path' ../package.json). -
最后一个 grep
grep -o '[^"]*'。如果不需要,请不要包含引号