2012-10-10 2 views
0

Разрывание моих волос, пытаясь понять, почему эта функция в моей ~/.bash_aliases вызывает ошибку.Получение неожиданного конца файла в функции base_aliases

function kill-xbmc() { xbmcpid=`ps aux | grep "[x]bmc" | awk "{printf "%s ",$2}"`; kill -9 ${xbmcpid} } 

Он продолжает производить тот же конец ошибки файла. Кажется, я не вижу, что мне не хватает пары {} или "" знаков или чего-то слишком очевидного.

ответ

3

Попробуйте это:

function kill-xbmc() { xbmcpid=`ps aux | grep "[x]bmc" | awk '{printf "%s ",$2}'`; kill -9 ${xbmcpid}; } 

Последнее утверждение в функции не закончилась ; поэтому закрытие } было принято в рамках последнего утверждения. Остальные строки сценария считаются частью функции, следовательно, ошибка «неожиданного конца файла», когда не найдено подходящих закрывающих фигурных скобок.

Я также изменил котировки для ваших аргументов awk. Вы использовали одинаковые символы кавычек для вложенных кавычек, и поэтому строка была прервана преждевременно.

awk "{printf "%s ",$2}" 
    --------- | ------ 
     |  |  | 
     s1  | s2 
       | 
     %s outside string 

Обратите внимание, что я использовал одиночные кавычки для наружных, чтобы убедиться, что $2 не расширяется оболочкой.

+0

Работает с удовольствием, и подробное объяснение имеет такой смысл. Вот почему мне нравится, насколько полезен stackoverflow! – juliushibert

Смежные вопросы