在我的bash_profile中,我创建了一个部署功能。在那里,我从文件中读取了一条路径:
deployPath=$(jq '.["prod-deploy-path"]' ./package.json)
当我打印路径时,我得到以下内容:
"/var/www/user/websitefolder/dist"
现在我要删除网址的最后一部分:
pwdPath=$(dirname $deployPath)
但我收到了
"/var/www/user/websitefolder/dist
(注意缺少最后一个引号)
如果我使用固定字符串而不是变量
执行相同的操作dirname "/var/www/user/websitefolder/dist"
我收到了我想收到的内容:
dirname "/var/www/user/websitefolder/"
我需要在bash_profile中编写什么才能获得与变量相同的结果和字符串?
答案 0 :(得分:3)
您需要使用-r
的{{1}}选项:
jq
将输出原始字符串。
你的问题不是你得到一个变量,而是变量中的内容用引号括起来,例如:
deployPath=$(jq -r '.["prod-deploy-path"]' ./package.json)
with_quotes='"something here"'
without_quotes='something here'
echo "$with_quotes" # "something here"
echo "$without_quotes" # something here
默认情况下会打印一个JSON编码的字符串。这也意味着,如果您的字符串包含双引号,则会按如下方式对其进行转义:jq
来自"hello \"world"
:
man jq