什么是shell?

shell是用户使用linux的工具,它有两种执行方式,一种是交互式解释执行,我们平时操作linux的各种命令就属于这种。另一种是批处理的方式,类似于程序性语言,有变量和参数,具有流程控制结构。

shell中的变量

我们可以在shell中定义一个变量,并赋值,正如其它语言一样。

  • env #显示全局变量(系统变量)
  • set #显示所有变量
  • unset + 变量名 #删除一个变量。
  • echo $变量 # 打印变量的值
  • export 变量 # 把变量声明为全局变量(即在当前终端开一个子bash或新开终端,通过export 变量,可以让变量继续生效)
  • 修改环境变量PATH: 编辑系统文件/etc/profile,将python的路径加入PATH全局变量,保存退出。
    shell脚本的简单学习
  • {}声明变量的边界

shell中的运算符(( )):

  • 算术运算符:+、-、*、/、%
  • 赋值运算符:=、+=、*=、/=、%= 例子:
    shell脚本的简单学习
    shell脚本的简单学习

  • 关系运算符:
    • ==、>、>=、<、<= 例子:
      shell脚本的简单学习
    • &&逻辑与、||逻辑或、!=逻辑非 例子:
      shell脚本的简单学习
  • bc 计算器,支持浮点数运算
    shell脚本的简单学习

test测试命令:

  • (()) 常用于数字之间的关系运算,但是有很大的局限性。而test命令适用于各种情况,应用更方便。
  • test -n 'abc' # 测试字符串abc的长度是否为零,如果不为零,那么测试结果为真0;如果是空字符,那么为假1
    shell脚本的简单学习
  • [  ] 我们习惯用两个中括号来代替test命令。注意:中括号内的首位打空格。测试字符串长度不为零,用[  ]表达
    shell脚本的简单学习
  • test / [  ] 命令测试字符常用的选项:
    • -n #字符串长度不为零
    • -z #字符串长度为零
    • = #字符串是否相等
    • != #字符串不相等
  • test / [  ]:-a逻辑与、-o逻辑或
  • test / [  ] 测试数字常用选项:
    •  -eq #整数相等
    • -ge #大于等于
    • -le #小于等于
    • -gt #大于
    • -lt #小于
    • -ne #不等于
  • test / [  ] 测试文件类型:
    • -b #判断文件是块设备
    • -d #判断文件是目录
    • -f #判断文件是普通文件
    • -h #判断文件是普通文件
  • 例子:
    • 用户认证
      shell脚本的简单学习
    • shell脚本的简单学习
    • 判断块设备
      shell脚本的简单学习
    • 判断目录
      shell脚本的简单学习


shell流程控制:

  • if...fi:写一个判断登录是否成功的脚本shell脚本的简单学习
    注意:如果脚本无法执行,chmod +x 脚本 修改权限
  • if...elif...else...fi 判断文件类型,多个分支条件:

    shell脚本的简单学习
    shell脚本的简单学习

  • while ...do...done 循环:

    shell脚本的简单学习
    sleep 1 暂停1秒;第10次不满足,done结束;done下面可以跟下一条命令
  • 循环猜年龄:
    shell脚本的简单学习
  • 判断登录用户,登录成功后执行命令:
    shell脚本的简单学习

  • for循环:
    • C语言风格,例子:打印乘法表
      shell脚本的简单学习
      控制打印格式:-n 当前行不换行打印,echo 空 换行
    • shell格式:
      shell脚本的简单学习
      shell脚本的简单学习
    • 实战:测试哪些ip地址可用
      shell脚本的简单学习
      每次ping会输出一长串提示信息,所以通过 &> /dev/null 把提示信息写入空文件;
      ping成功了输出提示,并写入一个文档记录下来。
    • 检测/dev下各种类型的文件数量
      for后面跟的有结果就行,比如:
      shell脚本的简单学习
      输出/test目录下的文件
      另外,相对路径不能被判断文件类型的条件检测到,所以要写绝对路径。
      shell脚本的简单学习
      shell脚本的简单学习
      注意:
      如果链接文件的判断条件在普通文件之下,那么,在if判断普通文件时,回去寻找连接文件的源文件类型,如果源文件是普通文件,那么算作普通文件,稍后之后的链接文件就不会再判断了,为0. 因为if判断过的文件不会再去重复判断。
      除非把链接文件的判断条件放在前面。
      shell脚本的简单学习

相关文章: