如何解决如何转义bash数组中的所有字符串?
我有一些bash数组arr_a
,我想获得一个数组arr_b
,其元素是转义arr_a
的相应元素的结果。
因此,如果
arr_a=("foo\"" "bar")
然后arr_a[0]
包含foo"
,而arr_a[1]
包含bar
;我希望arr_b[0]
包含foo\"
,而arr_b[1]
包含bar
。
我知道我可以使用printf %q "$the_string"
来转义单个字符串。问题是,如果我在函数或子shell中执行此操作,则通过将转义的字符串打印到函数的输出流中来“丢失”转义。什么是正确的方法?
解决方法
然后arr_a [0]包含foo“,而arr_a [1]包含bar;我希望arr_b [0]包含foo”,而arr_b [1]包含bar。
什么是正确的方法?
将转义的数组元素打印为零分隔的元素流,然后将该流加载到数组中。
arr_a=("foo\"" "bar")
readarray -t -d '' arr_b < <(printf "%q\0" "${arr_a[@]}")
echo arr_b[0]="${arr_b[0]}"
echo arr_b[1]="${arr_b[1]}"
将输出:
arr_b[0]=foo\"
arr_b[1]=bar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。