shell

#!/bin/bash表示脚本的解释器(即用什么命令执行,也可以是python啥的),如果没有的话,不能直接执行shell脚本
在写脚本时,有一些好习惯:注释文件的作用,作者,日期,source加载profile

  • 变量
    (1)变量赋值,前后都不能有空
    shell
    (2)变量的使用:需要加上$
    shell
    (3)把ls -l执行的结果赋给变量a(使用反引号)
    shell
    (4)常用变量
    $?用于判断上一个执行的命令是否执行成功(成功为0)
    shell
  • 传参
    $1表示第一个位置
    shell
    用单引号引起来,就是一个参数了
    shell
  • if和else语法
    If和fi只是表示开头和结尾,方括号才表示判断,而且方括号里面的空格不能少,只要有方括号就必须有then
    shell
    对整型做判断,两边都不写引号: shell
    对字符串做判断,需要加引号:== >= <= > <
    shell
    shell
    前面加上x_表示极端情况下不报错(例如变量为空)
    文件的判断:-e(文件名或者目录名是否存在) -f(是否是文件并且存在)-d(是否是目录并且存在) 存在则返回0
    变量的判断:-n(字符串不为空返回0) -z(字符串为空返回0)

其他的if写法(这样写比较简洁)
&&:与要求前后都为真,如果与的前面为假,当前命令直接就不执行了
||:或要求两边只有一个为真
shell
也可以在命令行里面执行
shell

  • for循环
    shell
    shell
    也可以放在命令行里面执行
    shell
    shell
  • break或者continue
    注意|传的是前面所有命令执行的内容
    执行continue就退出当前循环,继续下一次的循环;break所有的循环都终止
    shell
  • while循环
    判断都是方括号
    shell
    死循环,ctrl+c强制退出
    shell
    while read line,line是一个变量
    shell
    shell
    管道符的方式会产生子进程
    下面这种方式不产生子进程
    shell
    shell
  • read交互
    Read 变量:从键盘敲入的hi被捕获
    shell
    shell
    -s参数:进行输入的时候,不会显示出来
    Read -s 变量
  • Selsect交互,固定的交互:PS3(进行选择)
    shell

shell