После вашей команды brctl addbr br0
Вам необходимо подключить новый мост к реальному сетевому интерфейсу, например eth0
, ведьма подключена к Интернету. Используйте для этого следующую команду brctl addif br0 eth0
.
Это происходит из-за того, что сценарий был сохранен редактором, который использует окончания строки -DOS (, например Notepad++, например ). Вам придется удалить их из ваших скриптов.
Для этого либо используйте dos2unix
в файле скрипта, либо
$ tr -d '\r' <script >script.new && mv script.new script
(это удалит все возвраты каретки из в любом месте в скрипте)
Что касается кода в скрипте:
:
iter=1
if [ -f iter.txt ]
then rm./iter.txt
fi
Возможно, это должно выглядеть примерно так
iter=1
if [ -f "./$iter.txt" ]; then
rm "./$iter.txt"
fi
Это удаляет файл 1.txt
из текущего каталога, если он существует. Команда :
ничего не делает (почти )и может быть удалена. Значение переменной iter
следует использовать как $iter
и заключать в кавычки. И затем я, возможно, выражаюсь более явно, чем нужно, используя ./
, чтобы сказать, что файл должен быть найден в текущем каталоге.
Если вы планируете превратить это в цикл (здесь, удалив все файлы 1.txt
, 2.txt
,...,10.txt
):
iter=1
while [ "$iter" -le 10 ]; then
if [ -f "./$iter.txt" ]; then
rm "./$iter.txt"
fi
iter=$(( iter + 1 ))
done
Или, если мы чувствуем себя подлыми/ленивыми,
rm -f {1..10}.txt
в оболочках, понимающих раскрытие скобок.
У вас окончание строк в стиле Windows -.
Команда «нет» -:
вместо этого читается как :<carriage return>
, отображается как :\r
или более полно как $':\r'
.
Запустите dos2unix scriptname
, и все будет в порядке.
Если у вас нет dos2unix
, следующее должно работать почти везде (, и я тестировал MobaXterm в Windows):
vi -b filename
Затем в vi
введите:
:%s/\r$//
:x
Можете идти.
В vim
, который вы используете в Cygwin для vi
, есть несколько способов сделать это. Другой включает настройку fileformat
, которая может принимать значения dos
или unix
.Либо явно измените его после загрузки файла с помощью
set fileformat=unix, либо явно форсируйте формат файла при записи файла с помощью
:w +fileformat=unix.
Для получения дополнительной информации см. множество вопросов и ответов, посвященных этой теме, в том числе:
В ваших сценариях неправильные окончания строки -. Windows использует CR+LF (\r\n ), Unix использует LF (\n ), а Classic MacOS использует CR (\r ). Вам нужно будет изменить окончания строки -во всех затронутых файлах либо с помощью текстового редактора, либо с помощью отдельного инструмента, такого как dos2unix
.
FTP и системы контроля версий, такие как SVN, как правило, умеют правильно преобразовывать окончания строк, поэтому в будущем вы можете изучить эти возможности для передачи файлов.
Если эти файлы не передаются , а просто используются на одном компьютере, вам нужно будет найти настройки окончания строки в предпочитаемом вами текстовом редакторе. Большинство из тех, что рекламируются как «для программистов», будут иметь такую возможность.
В качестве дополнительного ответа позвольте мне добавить пару заметок/советов...
Во-первых, для обычных текстовых файлов вы можете легко определить, имеют ли они окончание строки Unix или DOS, используя команду file
. Например:
$ file test.txt
test.txt: ASCII text, with CRLF line terminators
$ dos2unix test.txt
dos2unix: converting file test.txt to Unix format...
$ file test.txt
test.txt: ASCII text
Обратите внимание на использование dos2unix
. Я настоятельно рекомендую вам установить его. В зависимости от того, как вы используете Cygwin, вы можете обнаружить, что вам нужно делать это преобразование достаточно часто, чтобы его удобство приветствовалось. Что еще более важно, нет возможности ошибки, как при ручном редактировании, обсуждаемом здесь.
Для установки запустите основной исполняемый файл Cygwin. Это тот, который называется setup -x86 _64.exe или что-то в этом роде. Убедитесь, что вы видите такой экран:
Поскольку вы уже выполнили первичную установку, вы должны нажимать Далее до тех пор, пока не появится экран выбора. Выберите «Полный» в раскрывающемся списке, введите «dos2» в поле поиска и выберите инструмент, как показано здесь :
.Затем снова нажмите Далее и дождитесь завершения установки. Вот и все. Развлекайся. Cygwin, за исключением этого случайного неудобства, — отличный пакет.
Я использую Notepad++ для редактирования своих сценариев bash (.sh )путем подключения к серверу с помощью WinSCP
(Чтобы настроить редактор WinSCP на Notepad++:https://winscp.net/eng/docs/ui_editor_preferences)
Это очень удобно для открытия файлов с серверов для редактирования/сохранения вместо «Vim » редактора.
Когда вы открываете файл в Notepad++ , дважды -щелкните по 7-му столбцу в строке состояния внизу и выберите «Unix (LF )».
Кроме того, вы должны изменить 8-й код, выбрав «Кодировка» -> «Кодировать в UTF» -8 в верхней панели.
Если не dos2unix, то есть и 'flip'
$ flip -u имя_файла.txt
переключит его на использование окончаний строк unix.
Вам не нужно менять фактическую кодировку строки файла, чтобы Cygwin Bash успешно работал с кодировками строк конца -из -. Есть вариант, который вам просто нужно перевернуть.
Просто обновите свой ~/.bash_profile
, чтобы он содержал
export SHELLOPTS
set -o igncr
См.https://ptolemy.berkeley.edu/projects/chess/softdevel/faq/5.html