博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell变量
阅读量:5897 次
发布时间:2019-06-19

本文共 1406 字,大约阅读时间需要 4 分钟。

什么是变量:

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

变量的类型:

环境变量(全局变量):可以在创建他们的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

你可能感兴趣的文章
同一局域网环境下的arp欺骗和中间人攻击(mac)
查看>>
知识巩固——面试遇到的
查看>>
视图的学习总结
查看>>
面试题30.最小的k个数
查看>>
JavaScript数组去重的三种方法(简易)
查看>>
十个提示让你成为明星程序员
查看>>
Windows 通用应用尝试开发 “51单片机汇编”总结
查看>>
39页作业第五题
查看>>
整数中1出现的次数(从1到n整数中1出现的次数)
查看>>
linux下区域截图,快捷键设置【ubuntu 10.10】
查看>>
关于layer.alert()函数不调用
查看>>
014-请问你觉得测试项目具体工作是什么?
查看>>
JVM类加载(4)—加载器
查看>>
public/private/protected的具体区别
查看>>
面试宝典——求一个字符串中连续出现次数最多的子串
查看>>
VMware Workstation虚拟机上网设置
查看>>
Jenkins持续集成学习-搭建jenkins问题汇总
查看>>
leetcode:Invert Binary Tree
查看>>
C#Note13:如何在C#中调用python
查看>>
Android介绍以及源码编译---Android源码下载
查看>>