@Zewkin
Я у мамы фронтэндер

Как сделать в bash?

Суть: есть файлик, в котором в каждой строке - имя директории, которую нужно деплоить.
Все бы было ничего, если бы не симовол перевода строки \r

rm -rf proxy-services

source ~/load_env.sh


SVNROOT=http://flink/svn2/mw/projects/services/ESB-Int/branches/proxy-services/
mkdir -p proxy-services
cd proxy-services
for BRANCH in `svn ls $SVNROOT --depth immediates | sed 's:/*$::'`;
  do
    if svn info $SVNROOT/$BRANCH/ci.txt 1>/dev/null 2>&1 ;
    then
      echo "File ci.txt found in $BRANCH branch..."
      echo "Fetching $BRANCH..."
      svn co $SVNROOT/$BRANCH
      cd $BRANCH
      for LINE in `cat ci.txt`;
        do
          if  [ -d `$LINE | sed 's/\\r//g'` ];    # тут все отрабатывает как надо, директория находится
          then
            echo "---- Now trying to deploy $LINE from $BRANCH..."   # попытки отбросить \r вот тут
      	    ant -buildfile ../../build4.xml -Ddeploy.type=kwsesbapu07 -Dproxy=$LINE -Dbranch=$BRANCH hdeploy-proxy # и вот тут миллионом разных способов ни к чему не привели
            cd ..
		  fi
      done
    fi
  done


Тут все наверняка очень просто, кто подскажет? Пробовал ${LINE%\r} - не получилось, регуляркой тоже, видно, что-то делаю не так.
Спасибо.
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега bash
software engineer
\r это возврат каретки, а не перенос строки.

1. Вы точно хотите удалить именно \r, а не \n ?

2. Попробуйте перед "for LINE in `cat ci.txt`;" выполнить:
dos2unix cat ci.txt

3. Можно "if [ -d `$LINE | sed 's/\\r//g'` ];" заменить на

$LINE=`echo "$LINE" | tr -d "\r"`
if [ -d $LINE ];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы