case语句支持的模式编程
a|b:a或者b *:匹配任意长度的任意字符 ?:匹配任意单个字符 [-]:范围匹配
case语法格式bash
case 表达式 in 模式1) 条件1 ;; 模式2) 条件2 ;; 模式n) 条件n ;; *) 剩余条件 ;; esac
bash脚本函数网络
函数:function 实现可被调用模块 两种返回值: 1.正常返回值 函数中的打印语句,如echo或print 最后一句执行成功 2.执行状态返回值 取决于函数中执行的最后一条语句 自定义: return N
函数能够接受位置参数:函数
$1,$#,$0,$*,$@,$? 若是想把脚本的所有位置参数,通通传递给脚本中函数使用,怎么办? 使用$*传递
函数做用域ui
变量做用域:local==declare -i 函数体能够调用函数体 那么函数体里声明变量 先内层函数体变量 在外层函数体变量 在主程序变量 在bash内置环境变量 若是没有不会报错 则为空显示0 在函数中使用了在主程序中声明的变量:从新赋值会影响主程序中的变量 若是不指望函数与主程序中的变量冲突,函数中使用变量都用local装饰;即便用局部变量 在函数中使用了序中在主程没有声明的变量:在函数执行结束后即被撤销,不管是否使用local装饰符
案例spa
[root@mm ~]#bash a.shh 10 xy 20 [root@mm ~]#cat a.shh #!/bin/bash declare -i A=10 built() { declare A=xy echo $A } show() { declare -i A=20(若是这行注释掉show函数块为10) echo $A } echo $A(主程序变量) built show
函数语法code
方法一 FuncName(){ 函数体 } 方法二 function FuncName{ 函数体 }
案例blog
写一个脚本,断定172.16.0.0网络内有哪些主机在线,在线的用绿色显示,不在线的用红色显示;要求,编程中使用函数;
写一个脚本,完成以下功能(使用函数): 一、提示用户输入一个可执行命令; 二、获取这个命令所依赖的全部库文件(使用ldd命令); 三、复制命令至/mnt/sysroot/对应的目录中 解释:假设,若是复制的是cat命令,其可执行程序的路径是/bin/cat,那么就要将/bin/cat复制到/mnt/sysroot/bin/目录中,若是复制的是useradd命令,而useradd的可执行文件路径为/usr/sbin/useradd,那么就要将其复制到/mnt/sysroot/usr/sbin/目录中; 四、复制各库文件至/mnt/sysroot/对应的目录中,其要求命令;