linux 函数与数组

  1. 函数的定义
    方法1:
    function_name () {
    statement
    }

方法2:
function function_name () {
statement
}

–先定义后使用

例:模拟用函数写一个服务启动,关闭,重启的脚本 (要求有start,stop,restart,status)

--以sshd服务为例写的服务脚本
#!/bin/bash

start() {
    pid=`pidof sshd`

    if [ -z $pid ];then
            /usr/sbin/sshd
            echo  "正在启动 sshd: [确定]"
    else
                    echo "服务sshd(pid  $pid)已存在"
    fi
}

function stop() {
    pid=`pidof sshd`

    if [ ! -z $pid ];then
            echo "服务sshd 已停"
    else
                killall sshd &> /dev/null
                echo "停止 sshd: [确定]"
    fi

}

restart() {
    pid=`pidof sshd`
 
    if [ -z $pid ]; then
                echo "停止 sshd:[失败]"
                /usr/sbin/sshd
                echo "正在启动 sshd:[确定]"
    else
                echo "停止 sshd:[确定]"
                /usr/sbin/sshd
                echo "正在启动 sshd:[确定]"
    fi

}

status(){
    pid=`pidof sshd`
    if [ -z $pid ];then
            echo "服务sshd 已停"
    else
            echo "服务sshd (pid  $pid)正在运行..."  
    fi

}

case "$1" in
    start )
    #启动sshd服务
    start
    ;;
    stop )
    # 停止sshd
    stop
    ;;
    restart )
    restart
    ;;
    status )
    status
    ;;
    * )
    echo "用法: /root/ssh2.sh {start|stop|restart|status}"
esac
  1. 函数的参数
    fun() {
    echo $1 --接收参数,$1=arg1,$2=arg2,$0是文件名
    echo $2
    }
    fun arg1 arg2 … --传参
    实例:

    #!/bin/bash

    add() {
    echo $1+$2 | bc
    }
    sub() {
    echo $1-$2 | bc
    }

    使用$1来接受add或sub,$2$3分别是2个数字

    case “$1” in
    add )
    add $2 $3
    ;;
    sub )
    sub $2 $3
    ;;
    * )
    exit
    esac

  2. 函数的返回值
    fun(){
    return value --使用return返回一个值(数字,只能是整数)
    }

    fun --调用函数
    echo $? --函数的返回值

    #!/bin/sh
    #函数传参
    add() {
    return $[$1+$2]
    }
    sub() {
    return $[$1-$2]
    }

    case “$1” in
    add )
    add $2 $3
    echo “$2+ 3 的 和 是 3的和是 3?”
    ;;
    sub )
    sub $2 $3
    echo “$2- 3 的 差 是 3的差是 3?”
    ;;
    * )
    echo “usage: sh $0 arg1 arg2 arg3”
    esac


使用read输入一个整数,把数字中的所有数字转换成英文单词
如:2345 转换为 two three four five

提示:需要计算输入的整数的长度,然后进行循环,截取整数中的单一字符(cut -c),对截取的单一字符
#!/bin/bash

read -p "请输入一个整数:" num

length=`echo ${#num}`     #${#string} 返回$string的长度

translate() {
        case "$1" in
                0 )
                echo -n " zero "
                ;;
                1 )
                echo -n " one "
                ;;
                2 )
                echo -n " two "
                ;;
                3 )
                echo -n " three "
                ;;
                4 )
                echo -n " four "
                ;;
                5 )
                echo -n " five "
                ;;
                6 )
                echo -n " six "
                ;;
                7 )
                echo -n " seven "
                ;;
                8 )
                echo -n " eight "
                ;;
                9 )
                echo -n " nine "
        esac
}

for (( i=1; i<=$length; i++ ))
do
        char=`echo $num |cut -c$i`
        translate $char
done
        echo

三. 数组

数组的定义:

# abc=( 1 2 a b "sfsda sf sfdsa" )  --定义一个数组,可以是数字,字母,或者字符串

# echo ${abc[0]}    --数组的下标是0不是1
1
# echo ${abc[1]}
2
# echo ${abc[2]}
a
# echo ${abc[3]}
b
# echo ${abc[4]}
sfsda sf sfdsa



--查看数组的全部值
# echo ${abc[*]}
1 2 a b sfsda sf sfdsa
# echo ${abc[@]}
1 2 a b sfsda sf sfdsa

--查看数组的个数
# echo ${#abc[*]}
5

# array3=(`ifconfig eth0|grep Mask`)
# echo ${array3[0]}
inet
# echo ${array3[1]}
addr:10.1.1.35
# echo ${array3[2]}
Bcast:10.1.1.255
# echo ${array3[3]}
Mask:255.255.255.0

echo ${array[2]} | cut -d: -f2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值