将bash函数参数传递给emacs
问题描述:
我在尝试在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:很抱歉,如果我的英语是不完美的,我是法国人
答
不要用这个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]";
它的工作原理,感谢的=) – JM445