shell变量

什么是变量:

变量就是用一个固定的字符串(也可能是字符数字等的组合),替代更多更复杂的内容,这个内容里可能还会包含变量和路径,字符串等其他内容。变量的定义是存在内存中

变量的类型:

环境变量(全局变量):可以在创建他们的Shell及派生出来的子shell中使用。环境变量又可以分为自定义环境变量和bash内置的环境变量。

局部变量(普通变量):只能在创建他们的shell函数或shell脚本中使用,还记得前面的$user?我们创建的一般都是普通变量。eg:

显示环境变量

查看系统环境变量

 普通字符串变量定义测试

把一个命令作为变量

case 语句小结

1)case语句就相当于多分支的if语句。case语句的优势是更规范,易读。
2)case语句适合变量的值少,且为固定的数字或字符串集合。
3)系统服务启动脚本传参的判断多用case语句

练习:实现一个计算器

  1.编辑一个脚本:vim calculator.sh

          #!/bin/env bash

          echo $(($1))

      执行:sh calculator.sh 3+2   ===>5

      执行:sh calculator.sh 3**2  ===>9

    编辑脚本:vim calculator.sh

          #!/bin/env bash

          echo $(($1$2$3))

   执行:sh calculator.sh 3 - 2  ===>1

  2.传参并计算

   编辑脚本:vim calculator.sh

        #!/bin/env bash

        a=$1

        b=$2

        echo "a-b = $(($a -$b))"

        echo "a**b = $(($a**$b))"......

  3.直接输入命令:echo $[2+3]或echo $[2**3]

防止脚本执行中断的方法:

1)sh while01.sh & #放在后台执行
2)screen 分离 ctrl+a+d 查看screen -ls进入screen -r num
3)nohup while01.sh &

脚本语句小结:

1)while循环的特长是执行守护进程以及我们希望循环不退出持续执行,用于频率小于1分钟循环处理(crond),其他的while循环几乎都可以被for循环替代。
2)case语句可以被if语句替换,一般在系统启动脚本传入少量固定规则字符串用case语句,其他普通判断多用if
3)一句话,if,for语句最常用,其次while(守护进程),case(服务启动脚本)

shell脚本调试技巧小结:

1)要记得首先用dos2unix对脚本格式化
2)直接执行脚本根据报错来调试,有时报错不准确。
3)sh -x调试整个脚本,显示执行过程。
4)set -x和set +x调试部分脚本(在脚本中设置)
5)echo输出变量及相关内容,然后紧跟着exit退出,不执行后面程序的方式,一步步跟踪脚本,对于逻辑错误比较好用。
6)最关键的时语法熟练,编码习惯,编程思想,将错误扼杀在萌芽中,减轻调试负担,提高效率。

原文地址:https://www.cnblogs.com/mashuang/p/9900254.html