Мой сценарий выглядит следующим образом:
#!/bin/sh
rm -rfv /home/user/Documents/Exercise/*
cp -rfv /home/user/Documents/ExerciseShare/ExerciseFiles/Word/Advanced/ /home/tp3/Documents/Exercise/
Если бы я запускал эти команды индивидуально через терминал, они выполнялись бы нормально. Я поместил их в скрипт (как указано выше), и когда я пытаюсь настроить скрипт, окна терминала вспыхивают примерно секунду, и ничего не происходит.
Мои попытки решения:
wait
в конец сценария - не повезло Run
и Run in Terminal
- не повезло Я использую Ubuntu 12.10 64-bit
После долгих часов работы я нашел маловероятный ответ.
Я создал новый пустой документ и добавил только две строки, которые я хотел (без заголовка #! / Bin / sh):
rm -rfv /home/user/Documents/Exercise/*
cp -rfv /home/user/Documents/ExerciseShare/ExerciseFiles/Word/Advanced/ /home/tp3/Documents/Exercise/
Затем я сохранил документ, щелкнув правой кнопкой мыши> свойства > разрешения> выполнить как программу
Бинго!
Спасибо всем, кто помог!
Согласно вашему комментарию, вы ввели дополнительный возврат каретки (\ r) в конце своей строки shebang
/bin/sh^M: bad interpreter
Если вы откроете свой исходный файл в vim, вы увидите [ 111] персонаж; Вы могли бы просто удалить это. Или вы можете открыть его в шестнадцатеричном редакторе, таком как hexedit, где вы увидите дополнительный 0D
.
Новые строки в Linux - это одиночные символы новой строки (\ n, 0x0A), в отличие от новых строк Windows, которые все еще восходят к временам пишущих машинок (\ r \ n, 0x0D 0x0A).