bash 语法

bash 语法

当然,以下是一个关于 Bash 语法的基础文档。Bash(Bourne Again SHell)是一种广泛使用的 Unix shell 和命令语言,它为用户提供了与操作系统交互的接口。

一、基本语法结构

  1. 注释:在 Bash 脚本中,以 # 开头的行被视为注释,不会被执行。

    # 这是一个注释
  2. 变量:Bash 中的变量不需要声明类型,可以直接赋值和使用。变量名区分大小写,且通常使用小写字母和下划线。

    my_variable="Hello, World!" echo $my_variable
  3. 字符串:可以使用单引号 ' 或双引号 " 来定义字符串。双引号内的变量会被解析,而单引号内的内容则被视为字面量。

    str1='Hello' str2="World" combined="$str1, $str2!" echo $combined
  4. 数组:Bash 支持一维数组,可以通过索引来访问元素。

    my_array=(apple banana cherry) echo ${my_array[0]} # 输出 apple echo ${my_array[@]} # 输出所有元素
  5. 条件语句:使用 if、elif 和 else 进行条件判断。

    if [ "$a" -gt "$b" ]; then echo "$a is greater than $b" elif [ "$a" -eq "$b" ]; then echo "$a is equal to $b" else echo "$a is less than $b" fi
  6. 循环:包括 for 循环和 while 循环。

    # for 循环 for i in {1..5}; do echo "Number: $i" done # while 循环 counter=1 while [ $counter -le 5 ]; do echo "Counter: $counter" ((counter++)) done
  7. 函数:Bash 函数用于封装一段代码,以便多次调用。

    my_function() { echo "This is a function." } my_function

二、常用命令和操作符

  1. 文件测试操作符:用于检查文件类型和权限等。

    • -e file :如果文件存在则为真。
    • -d directory :如果目录存在则为真。
    • -f file :如果普通文件存在则为真。
    • -r file :如果文件可读则为真。
    • -w file :如果文件可写则为真。
    • -x file :如果文件可执行则为真。
  2. 字符串比较

    • = :等于
    • != :不等于
    • -z string :如果字符串长度为零则为真。
    • -n string :如果字符串长度非零则为真。
  3. 数值比较

    • -eq :等于
    • -ne :不等于
    • -lt :小于
    • -le :小于或等于
    • -gt :大于
    • -ge :大于或等于

三、特殊变量

  • $0 :当前脚本的文件名。
  • $# :传递给脚本或函数的参数个数。
  • $* :传递给脚本或函数的所有参数。
  • $@ :传递给脚本或函数的所有参数(与 $* 不同,在处理带有空格的参数时表现不同)。
  • $? :上一个命令的退出状态码。
  • $$ :当前 Shell 进程 ID。
  • $! :后台运行的最后一个进程的进程 ID。

四、重定向和管道

  1. 输入重定向:将文件的内容作为命令的输入。

    command < inputfile
  2. 输出重定向:将命令的输出保存到文件中。

    command > outputfile # 覆盖写入 command >> outputfile # 追加写入
  3. 错误重定向:将错误信息保存到文件中。

    command 2> errorfile
  4. 管道:将一个命令的输出作为另一个命令的输入。

    command1 | command2

五、示例脚本

下面是一个简单的 Bash 脚本示例,演示了上述一些概念