脚本编程基础
程序编程风格
过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 程序的执行方式计算机:运行二进制指令 编程语言:人与计算机之间交互的语言 低级编程语言 机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写 汇编:用一些助记符号替代机器指令,称为汇编语言 ????如:ADD A,B 将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中 ????汇编语言写好的程序需要汇编程序转换成机器指令 ????汇编语言稍微好理解,即机器指令对应的助记符,助记符更接近自然语言 高级编程语言编译:高级语言-->编译器-->机器代码-->执行 ????C,C++ ?解释:高级语言-->执行-->解释器-->机器代码 ????shell,python,php,JavaScript,perl shell脚本
格式要求首行声明序列 ???#!/bin/bash 添加注释 ???注释以#开头 运行脚本 ???给予脚本执行权限,在命令行指定脚本的绝对或相对路径 ???直接运行解释器,将脚本作为解释器程序的参数运行 shell脚本的用途有自动化常用命令 执行系统管理和故障排除 创建简单的应用程序 处理文本或文件 脚本调试检测脚本中的语法错误 ??bash -n path 调试执行
Shell中变量命名法则1、不能使程序中的保留字:例如if,for 2、只能使用数字、字母及下划线,且不能以数字开头 3、见名知义 4、统一命名规则:驼峰命名法 Shell中命名建议规则1、变量名大写 2、局部变量小写 3、函数名小写 4、用英文名字,并体现出实际作用 bash中变量的种类
局部变量变量赋值:name=‘value’ 可以使用引用value ?(1) 可以是直接字串:name=“root" ?(2) 变量引用:name="$USER" ?(3) 命令引用:name=COMMAND ???name=$(COMMAND) 变量引用:${name} 或者 $name ?" " 弱引用,其中的变量引用会被替换为变量值 ?‘ ‘ 强引用,其中的变量引用不会被替换为变量值,而保持原字符串
环境变量变量声明、赋值: ??export name=VALUE ??declare -x name=VALUE 变量引用: ??$name,${name} 显示所有环境变量: ??env ??printenv ??export ??declare -x 删除变量 ?unset name 算术运算bash中的算术运算:help let ??+,-,*,/,%取模(取余),**(乘方),乘法符号有些场景中需要转义 实现算术运算: ??(1) let var=算术表达式 ??(2) var=$[算术表达式] ??(3) var=$((算术表达式)) ??(4) var=$(expr arg1 arg2 arg3 ...) ??(5) declare –i var = 数值 ??(6) echo ‘算术表达式’ | bc bash有内建的随机数生成器变量:$RANDOM(0-32767) ??示例:生成 0 - 49 之间随机数 ????echo $[$RANDOM%50] 赋值增强型赋值: ??+=,-=,*=,/=,%= let varOPERvalue ?例如:let count+=3 ??自加3后自赋值 ??自增,自减: ????let var+=1 ????let var++ ????let var-=1 ????let var-- 逻辑运算
示例正确是1,错误是0 与运算: 或运算 非:取反: AB值进行对调 短路与 && 短路或 || 与 && : 失败就无需往后执行 或 || : 失败继续往后执行,成功则无需往后执行 与或: 条件测试
bash的数值测试
bash的字符串测试
Bash的文件测试
Bash的文件权限测试
Bash的文件属性测试
Bash的组合测试条件
示例:test: [ ] : 判断用户magedu:如果存在则输出结果,如果不存在则创建该用户并输出结果 判断用户wang:如果存在则输出结果,如果不存在则创建该用户并输出结果 [[ ]] :支持正则表达式,通配符 =后跟的是扩展正则表达式; ==后面跟的是通配符 找.log/.xlog结尾的文件,输出结果 如果hello.sh这个文件是.sh后缀的,则添加执行权限, 如果hello.txt文件是.sh后缀,则添加执行权限,如果不是则不添加 看文件hello.txt是.sh后缀或者.txt后缀 -gt -a -o -lt : 判断n的数值是否大于等于90并且小于等于100;判断n的数值是否大于等于90或者小于等于100 -f -a -r : 判断/etc/issue是否为一个文件并且是否可读 练习编写脚本 hostping.sh,接受一个主机的IPv4地址做为参数,测试是否可连 通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提 示用户“该IP地址不可访问” 编写脚本 checkdisk.sh,检查磁盘分区空间和inode使用率,如果超过80%, 就发邮件警告空间将满 编写脚本 nologin.sh和 login.sh,实现禁止和允许普通用户登录系统 禁止: 允许: 使用read命令来接受输入
示例:read -p :指定要显示的提示 read -sp : 隐藏输入的密码 read -n :只取前三个字符 read -d :看到指定字符就结束 read -t : 以秒为单位,超时不输则直接退出 练习编写脚本 hostping.sh,让用户输入IP,测试是否可连通。如果能ping通,则提示用户“该IP地址可访问”;如果不可ping通,则提 示用户“该IP地址不可访问” 条件选择if语句
练习双分支 多分支 编写脚本,根据BMI进行身体质量衡量 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |