尝试在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:对不起,如果我的英语不完美,我就是法国人
答案 0 :(得分:2)
不要为此打扰bash数组。只需shift
关闭您不想要的位置参数,并将余下的内容传递给带有"$@"
的emacsclient
使用此修改的脚本如下所示:
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 "$@";