标签:close shell click play The case lap show 输入参数
shell的函数只能返回整数值,如果想让函数返回字符串可以在函数调用处为变量赋值。
# 定义函数
function test() { name=$1 echo "123213" }
# 调用函数,执行结果赋值给变量ret ret=$(test "lishichao") echo $ret
# 执行结果 [root@dev-test shell]# sh test.sh 123213
最近在写一键安装脚本,一个一个判断输入参数太麻烦,所以使用shell字典匹配对应函数。
function main(){ if [[ $USER != "root" ]] then echo "Please use root account" exit fi if [[ -z $VAR ]] then echo "please input your action:pypy,nginx,redis,mysql,hall0,hall37" exit fi case $VAR in "pypy") install_pypy5 ;; "nginx") nginx ;; "redis") install_redis ;; "mysql") install_mysql ;; "hall0") hall0 ;; "hall37") hall37 ;; *) echo "please input your action:pypy,nginx,redis,mysql,hall0,hall37" ;; esac } main
function install_php() { echo "安装php7" exit 0 } function install_filebeat() { echo "安装filebeat" exit 0 } function install_rabbitmq() { echo "安装rabbitmq" exit 0 } function install_logstash() { echo "安装logstash" exit 0 } declare -A dic dic=([php]=install_php [logstash]=install_logstash [filebeat]=install_filebeat) VAR=$1 for key in $(echo ${!dic[*]}) do if [[ $VAR == $key ]];then ${dic[$VAR]} echo "$key" fi done echo "$(pwd)/$0 {pypy | nginx | redis | mysql | hall0 | hall37 | rabbitmq | logstash | filebeat}"
执行结果:
[root@dev-test shell]# sh test.sh /opt/shell/test.sh {pypy | nginx | redis | mysql | hall0 | hall37 | rabbitmq | logstash | filebeat}
[root@dev-test shell]# sh test.sh logstash 安装logstash [root@dev-test shell]# sh test.sh filebeat 安装filebeat
标签:close shell click play The case lap show 输入参数
原文地址:https://www.cnblogs.com/root0/p/11896818.html