参考文档

GNU bash文档

脚本分类

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash), 一般系统默认采用bash
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)

常用语法

脚本文件一般为filename.sh, 增加执行权限 sudo chmod +x filename.sh
和C 语言一样,bash 程序也有分支,循环,注释 等语法。
观看视频了解更多

  • 指定脚本解析器路径

    1
    #!/bin/bash
  • 注释

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 单行注释

    :<<!
    多行注释,! 可以换成其它
    代码不会执行此区域代码
    !

    << EOF
    多行注释,EOF 不能变
    代码不会执行此区域代码
    EOF
  • 输出打印

    1
    echo "hello bash!"
  • 变量, 无类型

    1
    2
    3
    4
    5
    price=100
    path=/bin/

    # $-取变量值
    echo $price
  • 函数,function关键字定义函数

    1
    2
    3
    4
    5
    6
    7
    8
    9

    # 定义函数,无参数,无返回值
    function Add()
    {
    local a=10
    local b=20
    echo "a+b: $(( a+b ))"
    echo $a+$b
    }
  • 运算符号,这里语法比较特别
    -eq 相当于C ==
    -ne 相当于C !=
    -gt 相当于C >
    -lt 相当于C <
    -ge 相当于C >=
    -le 相当于C <=

  • 条件语句 if else

    1
    2
    3
    4
    5
    6
    7
    8
    9
    num1=10
    num2=20

    if [ $num1 -eq $num2 ]
    then
    echo "$num1 等于 $num2"
    else
    echo "$num1 不等于 $num2"
    fi
  • 循环语句

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    for (( var=1; var<=10; var++ ))
    do
    echo -n "$var"
    done
    echo ""

    for num in 1 2 3
    do
    echo $num
    done

    num=1
    while [ $num -le 0 ]
    do
    echo number : $num
    (($num))
    done
  • 重定向 > >>
    将输出内容写到指定的文件。> 会覆盖已有文件,如果文件不存在则新建一个。>> 采用追加的方式写入文件

  • 重定向 <
    将从文件中读取内容。