在base_aliases函数上获得意外的文件结尾

时间:2012-10-10 10:20:16

标签: bash function

撕掉我的头发试图找出为什么〜/ .bash_aliases中的这个函数导致错误。

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

它始终产生相同的文件错误结束。我似乎无法看到我错过了一对{}或“”标记或任何过于明显的标记。

1 个答案:

答案 0 :(得分: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

请注意,我使用单引号作为外部引号,以确保shell不会扩展$2