Удалить двойные кавычки из строки в bash - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь получить один файл из Git. Когда я запускаю команду git с жестко заданным значением, она работает. Однако, когда я запускаю его с переменной, он ломается. Я подозреваю, что это связано с двойными кавычками вокруг моей переменной. Я пробовал много команд, чтобы удалить двойные кавычки из строки, и ни одна из них, похоже, не работает.

Я в основном пытаюсь использовать переменную filePath в моей команде git без двойных кавычек вокруг нее.

#!/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

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Это работает:

$ printf '{"file-path": "/some/path"}' | jq --raw-output '."file-path"'
/some/path

Так что в вашем случае:

filePath=$(jq --raw-output '."file-path"' ../package.json)

Вы должны заключить в кавычки ключ, потому что он содержит дефис.

0 голосов
/ 06 марта 2020

Будет работать следующее:

filePath=$(grep -o '"file-path": *"[^"]*"' ./package.json | cut -d: -f2 | tr -d ' "')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...