将 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 "$@";
我在尝试在 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
关闭您不需要的位置参数,然后使用 "$@"
修改后的脚本如下所示:
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 "$@";