项目实施中,多人合作开发,进行SVN版本控制是非常有必要的. 发布代码工作也是其繁琐的(当然小型项目直接可以通过FTP方式上传),  自己动手写了一个基于bash方式进行自动发布导出svn两版本之间的文件shell脚本. 来进行代码发布.

但中间遇到一个问题,  文件名中含有shell脚本的小括号. 以至在脚本发布代码, 无法正常地将文件导出.提示”未预期的符号 `(‘ 附近有语法错误”. 这是由于shell中小括号被执行成脚本符号.其作用:

①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。

②命令替换。等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。有些shell不支持,如tcsh。

③用于初始化数组。如:array=(a b c d)

此时. 需要将小括号转义为普通字符即可.

shell转义符有三种。

字符说明如下:

”  单引号,  硬转义,其内部所有的shell元字符、通配符都会被关掉。注意,硬转义中不允许出现’(单引号).

“”  双引号, 软转义,其内部只允许出现特定的shell元字符($,`,\):$用于变量值替换、`用于命令替换.

\  反斜杠,   转义,去除其后紧跟的元字符或通配符的特殊意义.

CMD="svn export -r ${NEW_VERSION}  ${SVN_URL}${DIFF_FILE}  ${FOLDER_PATH}/${FILE_NAME}  --force"

修改为:

CMD="svn export -r ${NEW_VERSION} '${SVN_URL}${DIFF_FILE}' '${FOLDER_PATH}/${FILE_NAME}' --force"

文件路径两边加上单引号, 重新执行svn代码发布脚本, 正常导出.

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐