Итак, я активировал и установил Bash для Ubuntu для Windows, отлично!

Сейчас я пытаюсь написать простой сценарий оболочки, но я застрял. Этот простой пример сценария здесь ниже прекрасно работает на моем Linux - сервер, но выдает ошибку в Баш на окнах:

#!/bin/sh

# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}

# Invoke your function
Hello Zara Ali

# Capture value returnd by last command
ret=$?

echo "Return value is $ret"

выход:

rene@laptop:/mnt/f/xampp/htdocs$ sh test.sh
: not foundite.sh: 2: test.sh:
Hello World

Так что предупреждение и нет правильного вывода. Зачем? Какие-либо настройки, чтобы настроить в Bash для Windows, чтобы эта работа? Я ничего не изменил после установки Bash в Windows.

1 ответ1

1

Судя по результатам тестирования, это объясняется тем, что ваш сценарий был создан с использованием окончаний строк Windows (CRLF), а не окончаний строк в стиле Unix (LF), возможно потому, что вы использовали редактор на основе Windows. Я столкнулся с той же проблемой, так как я использовал SublimeText, который по умолчанию используется для «системных» окончаний строк (CRLF) в Windows.

Чтобы проверить это, просто скопируйте свой сценарий и создайте файл с помощью включенного редактора, такого как vi, в оболочке bash Ubuntu на Windows, настройте редактор на использование концов строк Unix или преобразуйте существующий файл в окончания строк Unix.

  1. vi test.sh
  2. Вставьте свой код
  3. Сохраните файл wq
  4. ./test.sh дает ожидаемые результаты

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .