我正在提供一些服务,我有一个setup.sh文件,必须首次(或更新时)。此脚本应创建某种别名,可以从此终端或新终端访问(也可在系统重新启动后)。此别名应指向另一个可执行的sh文件。
setup.sh文件:
#!/bin/bash
alias customservice='./customservice.sh "$@"'
正如您所看到的,这个customservice.sh脚本已准备好接受多个参数。有了这个自定义服务别名,我想这样调用这个脚本:
customservice //显示帮助
customservice开始
定制服务停止
customservice exec bash
......
我的customservice.sh fil:
if [ $# -eq 1 ] && [ $1 = "start" ]; then
//do something
elif [ $# -eq 1 ] && [ $1 = "stop" ]; then
//do something
elif [ $# > 1 ] && [ $1 = "exec" ]; then
//do stuff with ${@:2}
else
echo "help"
fi
也许诉讼杀人命令也会很好。它应该完全删除这个别名。
也许,如果这种方法被弃用,我愿意接受更好的解决方案。
答案 0 :(得分:4)
这不是做你所瞄准的最佳方式。如果您可以重新考虑您的方法,我建议您执行以下操作:
~/.bashrc
(或类似)来设置脚本的路径:export PATH=$PATH:/path/to/script/dir
customservice
命名,而不是customservice.sh
。#!/usr/bin/sh
或#!/bin/bash
,具体取决于您执行该操作所需的内容以及解释程序的位置。或者,对于通用方法,您可以使用#!/usr/bin/env bash
。优点:
$@
传递给别名的方法,这可能很脏。如果您不想使用直接方式,Make a Bash alias that takes a parameter?应完全满足您的需求。
答案 1 :(得分:0)
如果您要在〜/ .bashrc中加载别名:
#!/bin/bash
#add following in your setup.sh
cat << EOF >> ~/.bashrc
alias customservice='./customservice.sh \"\$@\"'
EOF
在具有bash shell的新终端上作为默认值,它应该激活别名。
显然,在安装行之前,你应该使用setup.sh在〜/ .bashrc中进行grep,以防别名已经存在。