我正在构建一个script https://stackoverflow.com/questions/4036832/replacing-a-specific-term-in-an-xml-file其中,它将用文件夹路径替换 XML 文件中的模式。
The sed
我尝试使用的命令是:
SEDCMD="s|PATHTOEXPORT|$2|"
where $2
是其中包含文件夹路径的命令行参数。
这后来被称为:
sed -e $SEDCMD $FILTER > $TEMPFILTER
但是,在运行该命令时,我收到“未终止的命令”错误。
我该如何解决这个问题?我尝试更改用于分隔正则表达式的字符(来自/
to |
)。我尝试过(以不同的方式)引用命令行参数。
shell 正在解析内容$SEDCMD
。如果您从 shell 脚本(包括 Makefile)中使用它,则应始终使用双引号保护所有扩展变量。双引号将强制变量插值,但会保护任何 shell 元字符免遭进一步解释。
sed -e "$SEDCMD" "$FILTER" > "$TEMPFILTER"
我假设$FILTER
and $TEMPFILTER
是文件名吗?我也引用了它们,以防它们包含空格或其他类型的 shell 元字符等邪恶的东西;是的,这很奇怪,但众所周知它会发生。定期运行rename 's/\s+/_/g'
对文件名进行清理以清除其中的空格,但对于其他文件名,您必须采取更谨慎的方法;例如,如何处理星号、问号、括号和括号等。
如果你添加-x
and/or -v
在你的 shell 命令行中,你会得到一些跟踪调试,我认为这可能会显示你在这里出错的地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)