У нас есть приложение. Как часть приложения - у нас есть набор bash-скриптов.Maven build разлагает скрипты bash?
Sctips сейчас находятся в тар-архиве:
$ ls -l manager/
total 3076
-rwx------+ 1 Administrators Domain Users 3123200 Jan 8 15:47 manager.tar
Затем, после TeamCity сборки, Maven создает банку-файл как "manager.jar", который включает в себя "manager.tar "внутри.
После распаковки банки, а затем смолы - все работает.
Но!
Если поместить Баш-скрипты без упаковки их в тар-архиве - после сборки и распаковки 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
Я думал об этом - но кажется нет ... TeamCity buildAgents работает под Linux; скрипты не содержат символов^M или как это ... Но - есть действительно проблема со специальными символами - newline ... Если удалить все «новые строки» в скрипте - это почти работает. – setevoy
'$ '\ r'' - артефакт конца строки DOS. Итак, ': command not foundne 10:' (что само переписывает ошибку). Эти файлы имеют окончание строк DOS. Если оригиналы не сделали, то что-то (возможно, создание банки) преобразует их. –
Вау ... Действительно ... Я просто ... даже с ': set list' - vim не отображает' \ r' ... Таким образом - я не могу их удалить. И, конечно, тогда вопрос - откуда он вообще появляется? – setevoy