Запуск команды монтирования в скрипте оболочки - PullRequest
2 голосов
/ 13 февраля 2012

Я пытаюсь запустить команду mount из сценария оболочки. Код, который я использую ниже:

echo mypassword | sudo -S mount -o loop system.img system

Если я напишу этот код прямо в терминал, все идеально. Но когда я пишу скрипт и запускаю скрипт из терминала, возникает проблема. Каталог, который я создал в моем скрипте, получает system^M после его монтирования. Имя каталога остается как system, но я могу получить к нему доступ из терминала, написав это:

cd system^M/

Из-за этой проблемы я не могу запустить свои команды после того, как они не могут найти мою директорию system. Кроме того, когда я запускаю скрипт, он монтирует файл img, но выдает сообщение об ошибке, например : not found

Кто-нибудь знает, в чем проблема?

Ответы [ 3 ]

1 голос
/ 13 февраля 2012

Ваш редактор пишет Windows (CR + LF) вместо разрывов строк Unix (только LF), см. статью из новой строки Википедии для получения более подробной информации.

1 голос
/ 13 февраля 2012

Имя каталога не остается ' как system';Проверьте это, выполнив

ls -b 

, чтобы увидеть экранирование.

Исправьте строки для вашего скрипта:

dos2unix script.sh 
# or
fromdos script.sh

Используя vim,

vim script.sh +"se ff=unix|wq"
1 голос
/ 13 февраля 2012

Похоже, ваш скрипт сохраняется с ограничителями строки DOS (CRLF, CR печатается как ^M на терминале unix в большинстве случаев). Убедитесь, что он сохранен с ограничителями строки UNIX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...