Bash字符串转换

时间:2016-10-02 10:29:34

标签: bash

你能帮我解决吗?

inputs='["some string", "BBB", "CCC", "something else"]'

inputs=( "some string" "BBB" "CCC" "something else" )

使用一些bash代码?

谢谢。

后来编辑: 结果应该是一个bash数组。根据@james和@Francois提供的解决方案,他们只创建一个字符串。

有什么想法吗? 再次感谢。

3 个答案:

答案 0 :(得分:2)

假设您有一个名为inputs的变量包含["some string", "BBB", "CCC", "something else"],那么您可以使用jqmapfile

$ mapfile -t inputs < <(jq -r '.[]' <<< "$inputs")
$ printf '<%s>' "${inputs[@]}"
<some string><BBB><CCC><something else>

答案 1 :(得分:1)

$ sed "s/\[/( /; s/]/ )/; s/[',]//g" foo
inputs=( "some string" "BBB" "CCC" "something else" )

首先将\[替换为(,将]替换为),然后将',替换为nuthin&#39;。

答案 2 :(得分:1)

使用sed

进行简单替换
inputs=$(echo $inputs | sed -e "s/\[/( /" -e "s/\]/ )/" -e "s/,//g")

(最后一个表达式删除逗号,在第一次尝试中忽略它)