b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

shell脚本编程功能

电脑杂谈  发布时间:2020-05-27 08:04:43  来源:网络整理

shell脚本教程_shell脚本 函数_shell脚本 函数

功能: 功能

过程编程: 代码重用

模块化编程

结构化编程

从整体上看一段独立的功能代码,并为其命名;命名的代码段是一个函数;

注意: 定义函数的代码段不会自动执行,但会在调用时执行. 所谓的调用函数,可以在代码中给出函数名称;

执行代码时,出现功能名称的任何地方都会自动替换为功能代码;

语法1:

函数f_name {

...功能主体...

shell脚本 函数_shell脚本教程_shell脚本 函数

}

语法2:

f_name(){

...功能主体...

}

函数的生命周期: 每次调用时都会创建该函数,并在返回时终止;

状态返回结果是函数体内最后运行的命令的状态结果;

自定义状态返回值shell脚本 函数,您需要使用: return

返回[0-255]

0: 成功

shell脚本教程_shell脚本 函数_shell脚本 函数

-255: 失败

示例: 给定用户名,获取用户的ID号和默认外壳;

#!/bin/bash
#
userinfo() {
    if id "$username" &> /dev/null; then
    grep "^$username\>" /etc/passwd | cut -d: -f3,7
    else
    echo "No such user."
    fi
}
username=$1
userinfo
username=$2
userinfo

示例2: 服务脚本框架

#!/bin/bash
#
# chkconfig: - 50 50
# description: test service script
#
prog=$(basename $0)
lockfile=/var/lock/subsys/$prog
start() {
    if [ -f $lockfile ]; then
        echo "$prog is running yet."
    else
        touch $lockfile
        [ $? -eq 0 ] && echo "start $prog finshed."
    fi
}
stop() {
    if [ -f $lockfile ]; then
        rm -f $lockfile
        [ $? -eq 0 ] && echo "stop $prog finished."
    else
        echo "$prog is not running."
    fi
}
status() {
    if [ -f $lockfile ]; then
        echo "$prog is running"
    else
        echo "$prog is stopped."
    fi
}
usage() {
    echo "Usage: $prog {start|stop|restart|status}"
}
case $1 in
    start)
        start ;;
    stop)
        stop ;;
    restart)
        stop
        start ;;
    status)
        status ;;
    *)
        usage
        exit 1 ;;
esac

函数返回值:

函数执行结果的返回值:

(1)使用echo或printf命令进行输出;

(2)在函数体中调用的命令的执行结果;

该功能的退出状态代码:

shell脚本教程_shell脚本 函数_shell脚本 函数

(1)默认值取决于函数体内执行的最后一条命令的退出状态代码;

(2)自定义: 返回

该函数可以接受参数:

将参数传递给函数:

在函数体中,您可以使用$ 1,$ 2,...来引用传递给函数的参数;您还可以使用$ *或$ @引用函数中的所有参数,而$#引用传递的参数数量;

调用函数时,将给定的参数列表用函数名称后的空格分隔,例如testfunc arg1 arg2 arg3 ...

示例: 添加10个用户shell脚本 函数

使用功能实现添加用户的功能,并将用户名作为参数传递给功能;

#!/bin/bash
#
# 5: user exists
addusers() {
    if id $1 &> /dev/null; then
        return 5
    else
        useradd $1
        retval=$?
        return $retval
    fi
}
for i in {1..10}; do
    addusers ${1}${i}
    retval=$?
    if [ $retval -eq 0 ]; then
        echo "Add user ${1}${i} finished."
    elif [ $retval -eq 5 ]; then
        echo "user ${1}${i} exists."
    else
        echo "Unkown Error."
    fi
done

可变范围:

shell脚本教程_shell脚本 函数_shell脚本 函数

局部变量: 范围是函数的生命周期;它会在函数结束时自动销毁;

定义局部变量的方法: 局部变量=值

局部变量: 作用域是运行脚本的shell进程的生命周期;因此,其范围是当前的Shell脚本程序文件;

示例程序:

#!/bin/bash
#
name=tom
setname() {
    local name=jerry
    echo "Function: $name"
}
setname
echo "Shell: $name"

函数递归:

该函数直接或间接调用自身;

案例: 实现以下功能

10! = 10 * 9! = 10 * 9 * 8! = 10 * 9 * 8 * 7! = ...

n

n *(n-1)! = n *(n-1)*(n-2)! =

#!/bin/bash
#
fact() {
    if [ $1 -eq 0 -o $1 -eq 1 ]; then
        echo 1
        else
        echo $[$1*$(fact $[$1-1])]
    fi
}
fact $1

实现以下顺序:

1,1,2,3,5,8,13,21,...


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-223796-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...