将bash函数参数传递给emacs

将bash函数参数传递给emacs,bash,emacs,zsh,Bash,Emacs,Zsh,我在尝试在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

我在尝试在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:如果我的英语不是很好,那很抱歉,我是法国人

不要为此而费心使用bash数组。只需
将不需要的位置参数移出
,并使用
“$@”

经过此修改的脚本如下所示:

if[$#-ge 2-a“$1”==”-s”]
然后
server=“$2”;
第二班;
其他的
server=“default”;
fi
nbsrv=`ls~/.emacs.d/server | grep“$server”| wc--chars`
如果[“$nbsrv”'='“0”]
然后
回显“正在启动服务器'$server'”;
emacs——守护进程=$server
fi
EmacClient--服务器文件=$server-nw“$@”;

不要为此而使用bash数组。只需
将不需要的位置参数移出
,并使用
“$@”

经过此修改的脚本如下所示:

if[$#-ge 2-a“$1”==”-s”]
然后
server=“$2”;
第二班;
其他的
server=“default”;
fi
nbsrv=`ls~/.emacs.d/server | grep“$server”| wc--chars`
如果[“$nbsrv”'='“0”]
然后
回显“正在启动服务器'$server'”;
emacs——守护进程=$server
fi
EmacClient--服务器文件=$server-nw“$@”;