shell脚本学习

一、什么是shell

shell是一个程序,采用C语言编写,是用户和linux内核沟通的桥梁。它既是一种命令语言,又是一种解释性的编程语言。

二、shell常用功能

  • 命令行解释功能
  • 启动程序
  • 输入输出重定向
  • 管道连接
  • 文件名置换
  • 变量维护
  • 环境控制
  • shell编程

三、shell中常用特殊符号

  • !:执行历史命令。

  • !!:执行上一条命令。

  • $:读取变量值。

  • &:后台执行。

  • ;:在shell中一行执行多条语句,中间用;分割。

  • |:管道符。前面语句的输出作为后面语句的参数。

  • ``:反引号。命令中执行命令。

    1
    
    echo "today is `date +%F`"
    
  • '':单引号。不解释变量。

    1
    2
    
    ~ ➤ echo '$USER'
    $USER
    
  • "":双引号。解释变量。

    1
    2
    
    ~ ➤ echo "$USER"
    bear
    

四、shell重定向

  • >:重定向输入,覆盖原数据

  • >>:重定向追加输入,在原数据的末尾追加。

  • <:重定向输出

    1
    2
    
    ➜  ~ wc -l < /etc/passwd
    36
    
  • <<:重定向追加输出。

    1
    2
    
    ➜  ~ fdisk /dev/sdb >>EOF   .....  EOF
    # 中间....的区域就是用户输入的交互区域。
    

    在Linux系统之中,EOF根本不是一个字符,而是当系统读取到文件结尾,所返回的一个信号值(也就是-1)

五、shell数学运算

每个操作之间必须添加空格。

  • 1
    2
    
    ➜  ~ expr 1 + 2
    3
    
  • 1
    2
    
    ➜  ~ expr 10 - 5
    5
    
  • *符号需要进行转义。

    1
    2
    
    ➜  ~ expr 2 \* 10
    20
    
  • 1
    2
    
    ➜  ~ expr 10 / 5
    2
    
  • 取余

    1
    2
    
    ➜  ~ expr 10 % 3
    1
    

六、其他命令

  • $?:表示上一条命令是否执行成功,如果返回为0,则执行成功,非0,则执行失败。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    ➜  ~ expr 1 + 7
    8
    ➜  ~ echo $?
    # 执行成功
    0
    ➜  ~ expr 1 + 8.1
    expr: 非整数参数
    ➜  ~ echo $?
    # 执行失败
    2
    
  • &>