从 bash 中的字符串中删除双引号

joh*_*ble 1 git bash shell

我正在尝试从 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
Run Code Online (Sandbox Code Playgroud)

l0b*_*0b0 5

这有效:

$ printf '{"file-path": "/some/path"}' | jq --raw-output '."file-path"'
/some/path
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

filePath=$(jq --raw-output '."file-path"' ../package.json)
Run Code Online (Sandbox Code Playgroud)

您必须引用该键,因为它包含连字符。