bash catenate строки справа налево

На этом этапе я отлаживаю этот скрипт catalina.sh:

echo "$CATALINA_HOME"
  echo "dot " .
  echo "179"
  if [ -r "$CATALINA_HOME"/bin/setclasspath.sh ]; then
    echo "qui 81"

    . "$CATALINA_HOME"/bin/setclasspath.sh
  else
    echo "185"
    echo "Cannot find $CATALINA_HOME/bin/setclasspath.sh"
    echo "This file is needed to run this program"
    exit 1
  fi

вывод:

 /home/sysadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE 
 dot  . 
 179
 185
 /bin/setclasspath.shsadm/2_KNOWAGE/Knowage_6-2_ARES/Knowage-Server-CE
 This file is needed to run this program

когда на самом деле setclasspath.sh exixts, имеет разрешения на запись и находится там, где он должен быть. Поэтому я ожидаю, что он будет найден и запущен.

1 ответ

Решение

Проблема почти наверняка связана с окончаниями строк. Я сильно подозреваю, что CATALINA_HOME подхватывает символ возврата каретки, потому что он был сохранен с окончанием строки Windows.

Попробуйте запустить скрипт через dos2unix зачистить карету возвращается.

Вы также можете проверить, что в вашем редакторе заданы концы строк Unix, а не Windows.

Другие вопросы по тегам