Maven构建破坏bash脚本?

时间:2015-01-08 16:49:14

标签: bash maven

我们有申请。作为应用程序的一部分 - 我们有一组bash脚本。

Sctips现在在tar-archive中:

$ ls -l manager/
total 3076
-rwx------+ 1 Administrators Domain Users 3123200 Jan  8 15:47 manager.tar

然后,在 TeamCity 构建之后, Maven 会创建类似" manager.jar "的jar文件其中包括" manager.tar "内部。

解压后jar然后tar - 一切正常。

但是!

如果把bash-scripts打包而没有将它们打包到tar-archive中 - 在构建和解压缩jar文件之后 - 我总是得到非常奇怪的错误:

$ ./manager.sh -h
: No such file or directory

$ bash -x manager.sh
+ $'\r'
: command not foundne 2:
+ $'\r'
: command not foundne 10:
'anager.sh: line 11: syntax error near unexpected token `{
'anager.sh: line 11: `setbase () {

虽然 - 两个manager.sh脚本(来自两个版本)看起来都相同(diff&& vimdiff)。

UPD

删除所有'换行符'在脚本中 - 它似乎是工作,很少的例子:

setbase () { if [ "$1" = "SIT" ]; then

然后使用-xv执行:

setbase () { if [ "$1" = "SIT" ]; then
  export BASEDIR="/home/user/APP"
  export smem="32G"
  export xmem="32G"
elif [ "$1" = "DEV" ]; then
manager/manager.sh: line 13: syntax error near unexpected token `elif'
'manager/manager.sh: line 13: `elif [ "$1" = "DEV" ]; then

但是 VIM 并没有显示任何符号,例如^M,两者都是相同的编码文件:

(这一项工作)

$ file -ib /home/user/APP/manager/manager.sh
text/x-java charset=us-ascii

(这一个 - 没有)

$ file -ib manager/manager.sh
text/x-java charset=us-ascii

1 个答案:

答案 0 :(得分:1)

问题是DOS行结尾。这可能与jar包装有关,或者您的新脚本可能只是您拥有的唯一DOS行结束文件。在任何一种情况下都要修复。