我在A楼 script 除其他外,这将用文件夹路径替换XML文件中的模式。
这个 sed 我尝试使用的命令是:
sed
SEDCMD="s|PATHTOEXPORT|$2|"
哪里 $2 是包含文件夹路径的命令行参数。
$2
这后来被称为:
sed -e $SEDCMD $FILTER > $TEMPFILTER
但是,在运行该命令时,我会收到一个“unterminated's'command”错误。
我怎么能避开这个?我试图改变用来分隔regex的字符 / 到 | )我尝试过用不同的方式引用命令行参数。
/
|
shell正在分析 $SEDCMD . 如果您是从shell脚本(包括makefile)使用该脚本,则应始终使用双引号保护所有扩展变量。双引号将强制变量插值,但保护任何shell元字符不受进一步解释的影响。
$SEDCMD
sed -e "$SEDCMD" "$FILTER" > "$TEMPFILTER"
我想 $FILTER 和 $TEMPFILTER 是文件名吗?我也引用了它们,以防万一它们包含了诸如空格或其他类型的shell元字符之类的邪恶内容;奇怪,是的,但这是众所周知的。定期跑步 rename 's/\s+/_/g' 对于文件名,要清除其中的空白,但对于其他文件名,您必须采取更仔细的方法;例如,如何处理星号、问号、括号和括号等。
$FILTER
$TEMPFILTER
rename 's/\s+/_/g'
如果你加上 -x 和/或 -v 对于shell命令行,您将得到一些跟踪调试,我认为这可能显示了您在这里哪里出错。
-x
-v