首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Shell脚本-从变量中删除第一个和最后一个引号(")

Shell脚本-从变量中删除第一个和最后一个引号(")
EN

Stack Overflow用户
提问于 2012-03-16 15:14:37
回答 9查看 362.7K关注 0票数 322

下面是一个更大的脚本中的shell脚本的片段。它从变量所持有的字符串中删除引号。我正在使用sed来做这件事,但是它是否有效呢?如果不是,那么有效的方法是什么?

代码语言:javascript
运行
复制
#!/bin/sh

opt="\"html\\test\\\""
temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'`
echo $temp
EN

回答 9

Stack Overflow用户

发布于 2020-02-07 04:37:23

如果您使用jq并尝试从结果中删除引号,其他答案将会起作用,但有一种更好的方法。通过使用-r选项,您可以输出不带引号的结果。

代码语言:javascript
运行
复制
$ echo '{"foo": "bar"}' | jq '.foo'
"bar"

$ echo '{"foo": "bar"}' | jq -r '.foo'
bar
票数 92
EN

Stack Overflow用户

发布于 2012-03-16 15:21:09

只需调用一次sed即可完成此操作

代码语言:javascript
运行
复制
$ echo "\"html\\test\\\"" | sed 's/^"\(.*\)"$/\1/'
html\test\
票数 23
EN

Stack Overflow用户

发布于 2019-06-04 21:34:43

Bash中最简单的解决方案:

代码语言:javascript
运行
复制
$ s='"abc"'
$ echo $s
"abc"
$ echo "${s:1:-1}"
abc

这称为子串扩展(参见Gnu Bash Manual和搜索${parameter:offset:length})。在本例中,它从位置1开始并在倒数第二个位置结束的s中获取子字符串。这是因为如果length是一个负值,它会被解释为从parameter末尾向后运行的偏移量。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9733338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档