2016-07-06 187 views
0

我在尝试在Bash中创建emacs守护进程管理函数时遇到问题。将bash函数参数传递给emacs

下面是函数的代码片段:

function ne 
{ 
if [ $# -ge 2 -a "$1" '==' "-s" ] 
then 
    server="$2"; 
    param=${@:3}; 
else 
    server="default"; 
    param=${@:1}; 
fi 
nbsrv=`ls ~/.emacs.d/server | grep "$server" | wc --chars` 
if [ "$nbsrv" '==' "0" ] 
then 
    echo "Starting server '$server'"; 
    emacs --daemon=$server 
fi 
emacsclient --server-file=$server -nw $param; 
} 

它几乎工作,问题是:

param=${@:x} 

对于为例,如果我跑:

ne -s srv1 file1 file2 

它不打开我2个新文件,但一个名为“file1 file2”

你有没有想法,我可以使这工作正常?

谢谢!

JM445

PS:很抱歉,如果我的英语是不完美的,我是法国人

回答

2

不要用这个bash的阵列打扰。只是shift关闭位置参数,你不想要的,并通过与其余以emacsclient "[email protected]"

你这个修改脚本的样子:

if [ $# -ge 2 -a "$1" '==' "-s" ] 
then 
    server="$2"; 
    shift 2; 
else 
    server="default"; 
fi 
nbsrv=`ls ~/.emacs.d/server | grep "$server" | wc --chars` 
if [ "$nbsrv" '==' "0" ] 
then 
    echo "Starting server '$server'"; 
    emacs --daemon=$server 
fi 
emacsclient --server-file=$server -nw "[email protected]"; 
+0

它的工作原理,感谢的=) – JM445