2013-11-07 1 views
1

Я довольно новичок в bash, и у меня проблемы с тем, что я предполагаю, форматирование. Я пытаюсь редактировать /etc/profile, поэтому он будет отображать сообщение для входа для root и другое сообщение для входа для кого-либо еще. Но я получаю ошибку bash: синтаксическая ошибка около неожиданного токена else. Я пробовал все разные комбинации точки с запятой, затем на следующей строке и т. Д., Но всегда получаю ту же ошибку. Я пробовал линии отдельно, и они отображают штраф (кроме $HOSTNAME, не могут заставить это работать). При запуске, как это, и войдите в систему с корнем, он просто перейдет на «Добро пожаловать $USER ...».bash: ошибка синтаксиса рядом с проблемой форматирования анонимного токена `else '?

Все предложения будут оценены!

if [ "$UID" -ne 0 ]; then 
    echo -e "\033[40;37;7m Danger! Root is doing stuff in `pwd`\033[0m" 
else 
    echo "Welcome $USER! You are working on `$HOSTNAME` in `pwd`." 
fi 
+0

Это работает для меня с Баш 3,2 – Himanshu

+0

Выглядит хорошо для меня - и делает работу, несмотря на две вещи. FIrst, вы, скорее всего, хотели бы проверить '[" $ UID "-eq 0]' вместо '-ne', иначе он будет повторять корневую тему для пользователей, не являющихся пользователем root, и наоборот. И второе: '$ HOSTNAME' не должно быть заключено в backticks, это не команда. –

+1

@JohannesH .: Если ваше имя хоста не совпадает с какой-либо командой (скажем, если вы назвали свою машину 'cat'). –

ответ

0

Как написано, выше работ для меня, - но, как было указано, вы должны изменить свой тест на -eq 0.

Для ошибки синтаксиса около неожиданной лексемы проблемы - я думаю, что ваш файл содержит встроенные «коду управления», то есть, скорее всего, возврат каретки \r.

Try:

cat -e ~/your_profile 

видят непечатаемые символы? если да, то удалите их (cat параметры могут отличаться - проверить вас справочную страницу) или

od -c ~/your_profile 
Смежные вопросы