shell脚本基础知识汇总4

电子说

1.3w人已加入

描述

break与continue

与其他编程相同里的概念相同,代码示例如下:

# break示例:
while true
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            break
        ;;
    esac
done
# 输出结果
输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束




# continue示例
while true
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"
            continue
            echo "游戏结束"
        ;;
    esac
done
# 输出结果,无法结束
输入 1 到 5 之间的数字:3
你输入的数字为 3!
输入 1 到 5 之间的数字:7
你输入的数字不是 1 到 5 之间的! 游戏结束
输入 1 到 5 之间的数字:

select

选择一个列表中的一个值,item列表值可以分别单独写出来,也可以是一个列表

语法格式如下:

select var in item1 item2..itemN
do
    command
done

代码示例如下:

list=(a b)
PS3="Please select the value:"
select var in ${list[*]};do
    break
done
echo "your select is $var"


# 输出结果
1) a
2) b
Please select the value:1
your select is a

1.9 函数

函数定义

shell中函数的定义格式如下, 其中return的返回值在[0-225] 之间,如果不加return将以最后一条命令运行结果,作为返回值.


[ function ] funname()
{
    action;
    [return int;]
}

示例代码:

# 完整格式定义函数
function test1() {
    echo "hello world1"
    return 0
}
# 简写的函数定义
test2() {
    echo "hello world2"

}


# 函数调用
test1
# 获取上一条指令的返回值,紧接着test1之后就是代表获取test1函数的返回值
echo $?
test2




# 输出结果
hello world1
0
hello world2

函数参数

在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $$

n 的形式来获取参数的值,例如,

$1表示第一个参数,$2表示第二个参数,依此类推。`$*`表示所有的参数,`$#`表示参数的个数 带参数的函数示例: ``` add() { echo "parmas: $*" echo "params count:$#" return $(($1+$2)) } add 1 2 echo "sum is $?" # 输出结果 parmas: 1 2 params count:2 sum is 3 ``` 根据上面的定义来看shell函数只能返回整形且为0-255之间,那么我们想返回字符串或者数组有没有其他办法呢? 我们可以通过其他方法来实现类似的效果的,示例代码如下: **获取字符串**结果,调用的时候通过`$(function_name param)`方式来调用,那这个函数里面所有`echo`出来的字符串就会赋值给你的变量,示例如下: ``` hello() { echo "say hello to $1" } result=$(hello world) echo $result # 输出结果 say hello to world ``` **获取数组** ,这个可以通过定义全局变量,在函数里面对其赋值 ``` arr=() testArray() { arr[0]=1 arr[1]=2 } testArray echo "arr content is ${arr[*]}" echo "arr size is ${#arr[*]}" # 输出结果 arr content is 1 2 arr size is 2 ``` # **2.参考** bash手册:https://www.gnu.org/software/bash/manual/bash.html Zsh手册: https://zsh.sourceforge.io/Doc/Release/index.html#Top
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分