Bash 查看包含方括号的压缩文件的内容

Bash 查看包含方括号的压缩文件的内容,bash,sed,unzip,brackets,Bash,Sed,Unzip,Brackets,每当x输出带方括号的字符串时,上面的命令就有问题。例如,假设在运行x行之后,$x=“Refresher[Autosaved]/xml/config.xml”。如果我将$x传递到内容行,我会得到一个错误,该错误为警告:文件名不匹配:Refresher[Autosaved]/xml/config.xml。我尝试过更新sed命令,用s/\[\([^]*\)\]/\\[\1\\\]/g(和\]/\\[\1\\\]/g转义括号,这些值回显良好,但当我将其保存到x时,\[和\]变成了[/code>和],我又

每当x输出带方括号的字符串时,上面的命令就有问题。例如,假设在运行x行之后,$x=“Refresher[Autosaved]/xml/config.xml”。如果我将$x传递到内容行,我会得到一个错误,该错误为
警告:文件名不匹配:Refresher[Autosaved]/xml/config.xml
。我尝试过更新sed命令,用
s/\[\([^]*\)\]/\\[\1\\\]/g(
\]/\\[\1\\\]/g
转义括号,这些值回显良好,但当我将其保存到x时,
\[
\]
变成了
[/code>和
]
,我又回到了原点


如果我的x值有方括号,如何运行content命令?

使用现代
$(…)
而不是旧式
`…
可以省去很多麻烦。前者不需要额外的转义:

x=`unzip -l "$i" | grep /config.xml | tail -1 | sed -e "s/.*:[0-9][0-9] *//"`
content=`unzip -c "$i" "$x" | DO MORE STUFF HERE

使用现代的
$(…)
而不是传统的
`…`
可以省去很多麻烦。前者不需要额外的转义:

x=`unzip -l "$i" | grep /config.xml | tail -1 | sed -e "s/.*:[0-9][0-9] *//"`
content=`unzip -c "$i" "$x" | DO MORE STUFF HERE

使用Python
zipfile
模块这样的工具可以让您直接将名称作为文本处理,而不是试图从文本流中挑选内容,这将是非常明智的。使用Python
zipfile
模块这样的工具可以让您直接将名称作为文本处理,而不是试图从文本流中挑选内容。