linux grep 未预期的符号 `(' 附近有语法错误,linux 未预期的符号`(“附近有语法错误...
项目实施中,多人合作开发,进行SVN版本控制是非常有必要的. 发布代码工作也是其繁琐的(当然小型项目直接可以通过FTP方式上传), 自己动手写了一个基于bash方式进行自动发布导出svn两版本之间的文件shell脚本. 来进行代码发布.但中间遇到一个问题, 文件名中含有shell脚本的小括号. 以至在脚本发布代码, 无法正常地将文件导出.提示”未预期的符号 `(‘ 附近有语法错误”. 这是由于..
项目实施中,多人合作开发,进行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代码发布脚本, 正常导出.
更多推荐
所有评论(0)