• shell(二)流程控制和函数


    流程控制

    if 判断

    基本语法

    • 写法一

    if [ condition ];then
    程序
    fi
    • 写法二

    if [ condition ]
    then
    程序
    fi

    if...else...fi 格式

    if [ condition ];then
    程序
    else
    程序
    fi

    if...elif...fi 格式

    if [ condition ];then
    程序
    elif [ condition ];then
    程序
    fi

    注意事项

    • [ condition ] ,中括号和 condition之间必须有空格

    • if 后要有空格

    case 语句

    基本语法

    case $变量名 in
    "值1")
    如果变量等于值1,则执行程序1
    ;;
    "值2")
    如果变量等于值2,则执行程序2
    ;;
    ...
    *)
    如果变量值不是以上的值,则执行此程序,类似于default
    ;;
    esac

    注意事项

    • case 行尾必须为单词 in ,每一个模式匹配必须以右括号 ) 结束

    • 双分好 ;; 表示命令序列结束,相当于Java的break

    • 最后的 *) 表示默认模式,相当于Java的default

    for 循环

    基本语法一

    for((初始值;循环控制条件;变量变化))
    do
    程序
    done

    示例

    #!/bin/bash
    s=0
    for((i=1;i<=100;i++))
    do
    s=$[$s+$i]
    done
    echo $s

    基本语法二

    for 变量 in 值1 值2 值3...
    do
    程序
    done

    示例

    #!/bin/bash
    for i in "$*"
    do
    echo $i
    done
    for j in "$@"
    do
    echo $j
    done

    执行结果如下,区别 $* 和 $@

    [root@192 shell_jiaoben]# bash for2.sh 1 3 4 5
    1 3 4 5
    1
    3
    4
    5

    while 循环

    基本语法

    while [ condition ]
    do
    程序
    done

    示例

    #!/bin/bash
    i=1
    s=0
    while [ $i -le 100 ]
    do
    s=$[$s+$i]
    i=$[$i+1]
    done
    echo $s

    break 、continue

    和Java类似

    函数

    系统函数

    1. basename基本语法

    basename [string/pathname] [suffix]

    • basename 命令会删掉 [string/pathname] 中所有的前缀,即 [string/pathname] 中 / 之前的内容,然后将剩余的内容显示出来

    • suffix 为后缀,basename 会将 [string/pathname] 中的 suffix 去掉

    [root@192 shell_jiaoben]# basename /home/shell_jiaoben/read.sh .sh
    read

    从文件路径和文件后缀中截取文件名

    2. dirname基本语法

    dirname 文件绝对路径

    • 从给定的决定路径(包含文件名) 去除文件名,返回剩下的路径(目录部分)

    [root@192 shell_jiaoben]# dirname /home/shell_jiaoben/read.sh 
    /home/shell_jiaoben

    自定义函数

    定义函数基本语法

    [ function ] funname[()]
    {
    Action;
    [return int;]
    }
    • 必须在调用函数之前声明函数,shell脚本是逐行运行

    • 函数返回值,只能通过 $? 系统变量获得,可以显示加 : return 返回,将以最后一条命令运行结果作为返回值,return 后跟数值 n (0-255)

    传参

    #!/bin/bash
    function sum()
    {
    s=0
    s=$[$1+$2]
    echo $s
    }
    read -p "input param1" p1
    read -p "input param2" p2
    sum $p1 $p2

    带返回值

    #!/bin/bash
    function mul()
    {
    s=$[2*3]
    return $s
    }
    mul
    echo "mul=$?"

    read 读取控制台输入

    基本语法

    read (选项) (参数)

    选项:

    • -p:指定读取值时的提示语

    • -t:指定读取值时等待的时间 (秒)

    参数:

    • 变量:指定读取值的变量名

    示例

    #!/bin/bash
    read -t 7 -p "pls input" name
    echo $name

    test命令

    用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

    shell脚本文件引用

    两种引用写法:

    • . filename ;使用 . 号来引用文件,注意点号(.)和文件名中间有一空格

    • source filename



  • 相关阅读:
    python算法:嵌套数组转变成一维数组
    python算法:约瑟夫问题
    python的加密算法(1):反转加密
    算法:桶排序
    正则表达式学习(3):相关符号解释
    代码这样写更优雅(1)
    正则表达式学习(2)
    神奇的Bank系统之旅哦
    C#之第五单元的项目打印购物单
    C#语言的基础
  • 原文地址:https://www.cnblogs.com/yjh1995/p/13160554.html
Copyright © 2020-2023  润新知