将 bash 函数参数传递给 emacs

Pass bash function parameters to emacs

我在尝试在 Bash 中创建 emacs 守护程序管理功能时遇到问题。

这是函数片段:

function ne
{
if [ $# -ge 2 -a "" '==' "-s" ]
then
    server="";
    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 数组。只需 shift 关闭您不需要的位置参数,然后使用 "$@"

将其余部分传递给 emacsclient

修改后的脚本如下所示:

if [ $# -ge 2 -a "" '==' "-s" ]
then
    server="";
    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 "$@";