Shell编程
Shell 脚本的解释器脚本的编写规范执行脚本的三种方式变量的声明变量的引用字符串使用字符串长度及截取脚本参数传递算数运算符流程控制if*关系运算符循环跳出循环case ()接收控制台数据函数的使用函数调用数组数组的使用文件加载
Shell 脚本的解释器
/bin/sh/bin/bash/sbin/nologin/bin/dash/bin/tcsh/bin/csh
脚本的编写规范
首行描述解释器 #!/bin/bash
执行脚本的三种方式
bash 脚本名称 脚本参数sh 脚本名称 脚本参数/脚本名称 脚本参数【./脚本名称之间没有空格】【chmod 777 脚本名称】
变量的声明
变量名=”值”【中间不能有空格】变量名要求 字母或下划线或数字(开头不能是数字)构成
变量的引用
使用$ 或 ${}引用变量删除变量 只读变量删除 unset 变量名只读 readonly 变量名
字符串使用
双引号(””):内部可以使用变量单引号(‘’):内部所有的原样输出反引号(``):表示可执行
字符串长度及截取
长度: echo ${#skill}截取: echo ${str:2:2} 【在第二个字符开始截取截取两位】
脚本参数传递
bash 脚本名 参数1 参数2 参数3 。。。。。。脚本内$0 脚本名称$1 参数1$2 参数2$n 参数n$* 所有参数$# 参数的个数
算数运算符
加法计算 expr 2 + 2乘法计算 expr 2 \* 2
流程控制if*
if [ $a -gt 10 ];then 代码1 elif [ $a -lt 10 ];then 代码2 else 代码3 fi
关系运算符
大于:-gt小于:-lt大于等于:-ge小于等于 :-le小于:-eq不等于 :-ne
循环
For 循环: For aa in XXXX do 循环体 doneWhile循环: While 条件 ; do 循环体 done
跳出循环
跳出所有循环:break跳出当前循环,进入下一次循环:continue
case ()
case 值 in 结果1) 结果1对应的操作;; 结果2) 结果2对应的操作;; 结果3) 结果3对应的操作;; esac
接收控制台数据
read 变量名
函数的使用
函数声明: [function] 函数名(){ 函数体 $参数1 $参数2 $参数3 }
函数调用
函数名 参数1 参数2 参数3
数组
数组声明: 数组名称=(元素1 元素2 元素3 元素4)
数组的使用
单个使用 echo 数组名[角标] 【角标从0开始】遍历数组 for var in ${my_arr[*]} do echo $var done
文件加载
在文件中添加 . 脚本名称 或者 source 脚本名称 #!/bin/bashsource ./test1.sh :加载test1.sh 的文件内容