Синтаксическая ошибка возле неожиданного токена `$ 'in \ r'

когда я создаю сценарий оболочки, я получаю следующую ошибку, поскольку я новичок в CentOS, я не могу выяснить причину, может ли кто-нибудь помочь мне в этом?

Я предполагаю, что нам нужно передать параметр командной строки при выполнении, я не уверен, что здесь нужно передать в качестве параметра.

Shell-скрипт:

#!/bin/sh

# Default place to look for apr source.  Can be overridden with
#   --with-apr=[directory]
apr_src_dir=../apr

while test $# -gt 0
do
  # Normalize
  case "$1" in
  -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
  *) optarg= ;;
  esac

  case "$1" in
  --with-apr=*)
  apr_src_dir=$optarg
  ;;
  esac

  shift
done

if test -d "$apr_src_dir"
then
  echo ""
  echo "Looking for apr source in $apr_src_dir"
else
  echo ""
  echo "Problem finding apr source in $apr_src_dir."
  echo "Use:"
  echo "  --with-apr=[directory]"
  exit 1
fi

# Remove some files, then copy them from apr source tree
rm -f build/apr_common.m4 build/find_apr.m4 build/install.sh \
      build/config.guess build/config.sub build/mkdir.sh \
      build/make_exports.awk build/make_var_export.awk \
      build/get-version.sh
cp $apr_src_dir/build/apr_common.m4 $apr_src_dir/build/find_apr.m4 \
   $apr_src_dir/build/install.sh $apr_src_dir/build/config.guess  \
   $apr_src_dir/build/config.sub $apr_src_dir/build/mkdir.sh \
   $apr_src_dir/build/make_exports.awk $apr_src_dir/build/make_var_export.awk \
   $apr_src_dir/build/get-version.sh \
   build

Получена ошибка:

[root@localhost apr-iconv]# sh buildconf 
buildconf: line 2: $'\r': command not found
buildconf: line 6: $'\r': command not found
buildconf: line 10: syntax error near unexpected token `$'in\r''
'uildconf: line 10: `  case "$1" in

Спасибо :)

Похоже, ваш файл сохранен с окончанием строки Windows. См., Например, stackoverflow.com/questions/2613800/… о том, как конвертировать ваш файл.

nos 10.08.2018 14:44

привет большое спасибо. Он работал после преобразования в формат unix.

amb 16.08.2018 13:56
2
2
2 642
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Эта ошибка исчезла после преобразования сценария оболочки в формат Unix. Это преобразование вы можете выполнить, выполнив команду dos2unix <file-name>. Если необходимо установить dos2unix, чтобы избежать ошибки «dos2unix: команда не найдена».

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