war*_*ren 3 regex debugging shell sed
我正在构建一个脚本,除其他外,将用文件夹路径替换XML文件中的模式.
sed我试图使用的命令是:
SEDCMD="s|PATHTOEXPORT|$2|"
Run Code Online (Sandbox Code Playgroud)
$2命令行参数在哪里,其中包含文件夹路径.
这后来被称为:
sed -e $SEDCMD $FILTER > $TEMPFILTER
Run Code Online (Sandbox Code Playgroud)
但是,在运行命令时,我收到"未终止'的'命令'错误.
我怎么能绕过这个?我试着改变使用正则表达式分隔字符(/至|).我尝试引用(以不同的方式)命令行参数.
shell正在查看解析内容$SEDCMD.如果您从shell脚本(包括Makefile)中使用它,则应始终使用双引号保护所有扩展变量.双引号将强制进行变量插值,但保护任何shell元字符不被进一步解释.
sed -e "$SEDCMD" "$FILTER" > "$TEMPFILTER"
Run Code Online (Sandbox Code Playgroud)
我认为$FILTER和$TEMPFILTER是文件名?我也引用了它们,以防它们包含空白或其他类型的元字符等邪恶的东西; 奇怪的,是的,但它已经知道会发生.定期运行rename 's/\s+/_/g'文件名以清除空白,但对于其他人,你必须采取更谨慎的方法; 例如,如何处理星星与问号与括号和parens等.
如果你添加-x和/或-v你的shell命令行,你会得到一些跟踪调试,我认为这可能会显示你在这里出错的地方.