Переменная в сценарии bash - PullRequest
2 голосов
/ 08 июля 2011

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

Вот пример того, что происходит:

sbaker@eye004:~/workspace/fire_trunk$ REMOTE_HOSTNAME="`ssh $REMOTE 'hostname'`"
sbaker@eye004:~/workspace/fire_trunk$ echo "before $REMOTE_HOSTNAME after"

печатает (обратите внимание на префикс пробела): " after sbaker-PC"

sbaker@eye004:~/workspace/fire_trunk$ echo $REMOTE_HOSTNAME

печать: "sbaker-PC"

Мне интересно, почему переменная кажется непригодной и делает странные вещи (если слово после длиннее слова перед, оно записывается поверх символов) Я ожидаю, что первый эхо напечатает: "before sbaker-PC after".

Я просто делаю что-то глупое здесь? Я использую Bash на Ubuntu 11.

1 Ответ

5 голосов
/ 08 июля 2011

Если вы введете его через od -c, вы увидите, что он на самом деле возвращает sbaker-PC\r.CR в конце заставляет его вернуть курсор к первому столбцу, перед тем как повторить остальную часть текста, скрывая «до».Что касается , почему добавляет \r, возможно, файл с именем хоста на другой стороне был сохранен с окончанием строки DOS (CRLF) вместо * nix окончания строки (LF).

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