定义变量的三种方式
- 直接赋值
1 | 如:x=10 或 file=/etc/hosts |
- 传参(传递参数)
1 | $0 $1 ... $n $# |
- 交互式设置变量
1 | 使用read命令实现脚本交互。 |
1 | [root@jkbackup scripts]# read |
1 | [root@jkbackup scripts]# read -p "请输入你的年龄:" |
把值明确赋值给某个变量
1 | [root@jkbackup scripts]# read -p "请输入你的姓名:" age |
交互输入银行卡账号密码
1 | [root@jkbackup scripts]# cat test.sh |
变量的子串
1 | 查找man bash搜索Parameter Expansion |
1 | 基础知识 |
获取子串(变量值)的长度
1 | 格式: echo ${#OLDBOY} |
提取部分子串
1 | [root@jkbackup scripts]# echo ${file} |
删除部分字符串
1 | [root@jkbackup scripts]# oldboy=abcABC123ABCabc |
1 | [root@jkbackup scripts]# echo ${oldboy} |
替换
1 | 单个替换 |
空变量
1 | find一个空变量并删除的结果: |
变量赋值
1 | 示例: |
1 | #检测变量不存在就临时赋值 |
1 | #检测变量不存在就进行赋值 |
变量的数值运算
使用双括号 (()) 进行加减乘除
1 | 格式:echo $((1+1*8)) |
1 | i=5 |
1 | i=7 |
写一个加减乘除的shell计算器
1 | [root@jkbackup scripts]# cat jisuanqi.sh |
使用let进行加减乘除运算
1 | [root@jkbackup scripts]# i=1 |
使用expr进行加减乘除运算
1 | 示例:expr 1 + 2 |
使用expr判断输入的传参是否为整数
1 | [root@jkbackup scripts]# expr 1 + a |
bc 小数计算
1 | bc进入交互界面 |
[]加减乘除计算
1 | [root@jenkins ~]# echo $[2+3] |
awk计算
1 | [root@jenkins ~]# echo "7.7 3.8"|awk '{print ($1-$2)}' |
条件表达式
1 | 对环境等进行判断 |
文件判断
1 | 先敲一对[],然后退格输入2个空格[ ],最后再回退一个空格开始输入[ -f /etc/hosts ] |
1 | [ -f /etc/hosts ] && echo "表达式成立" || echo "表达式不成立" |
字符串判断
1 | [root@jenkins scripts]# name= |
1 | [root@jenkins scripts]# [ -z "$age" ] && echo "表达式成立" || echo "表达式不成立" |
1 | [ "$name1" == "$name2" ] && echo "表达式成立" || echo "表达式不成立" |
整数判断
1 | -eq equal 等于 |
逻辑判断符
1 | 与 简写:-a |
判断两个数字-测试
1 | 直接赋值方式 |
1 | 变量方式 |
1 | read读入方式 |
条件语句
if条件语句
单分支语句
1 | 如果 条件成立;则 |
1 | if [ $num1 -gt $num2 ];then |
双分支语句
1 | if [ $num1 -gt $num2 ];then |
多分支语句
1 | if [ $num1 -gt $num2 ];then |
小结
1 | 单分支:一个条件一个结果 |
练习
1 | 要求:使用脚本监测系统内存,低于100M发邮件报警, 3分钟检查一次 |
1 | #!/bin/bash |
写一个nginx启动脚本
1 | [root@jenkins scripts]# . /etc/init.d/functions |
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/12/02/shell高级编程-进阶2/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!