来自变量的字符串的Mac Dirname

时间:2016-05-12 11:30:04

标签: bash macos

在我的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中编写什么才能获得与变量相同的结果和字符串?

1 个答案:

答案 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