下面是一个更大的脚本中的shell脚本的片段。它从变量所持有的字符串中删除引号。我正在使用sed来做这件事,但是它是否有效呢?如果不是,那么有效的方法是什么?
#!/bin/sh
opt="\"html\\test\\\""
temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'`
echo $temp
发布于 2020-02-07 04:37:23
如果您使用jq并尝试从结果中删除引号,其他答案将会起作用,但有一种更好的方法。通过使用-r
选项,您可以输出不带引号的结果。
$ echo '{"foo": "bar"}' | jq '.foo'
"bar"
$ echo '{"foo": "bar"}' | jq -r '.foo'
bar
发布于 2012-03-16 15:21:09
只需调用一次sed
即可完成此操作
$ echo "\"html\\test\\\"" | sed 's/^"\(.*\)"$/\1/'
html\test\
发布于 2019-06-04 21:34:43
Bash中最简单的解决方案:
$ s='"abc"'
$ echo $s
"abc"
$ echo "${s:1:-1}"
abc
这称为子串扩展(参见Gnu Bash Manual和搜索${parameter:offset:length}
)。在本例中,它从位置1开始并在倒数第二个位置结束的s
中获取子字符串。这是因为如果length
是一个负值,它会被解释为从parameter
末尾向后运行的偏移量。
https://stackoverflow.com/questions/9733338
复制相似问题