posts - 95,comments - 0,views - 12934

shebang 行

shell脚本的第一行是#!/bin/bash/bin/bash是我们用来解释该脚本的shell的路径,这里是用bash,也可以替换成其他的

注释

# 这是一个注释

# 开头表示该符号右侧是注释

变量

  • 变量赋值

    在shell中,变量都是以字符串形式存储的,数字字符串会在进行算术运算时自动转换

      # 不能用空格分隔
      name="hello"
      age=1
    
  • 获取变量值

    在shell中,使用 $ 符号获取变量值

      echo "${name}" # 输出 "hello"
      echo "$name"   # 输出 "hello"
    

测试条件

  • 字符串的比较

    • = :判断两个字符串是否相等
      [ "$str1" = "$str2" ]

    • != :判断两个字符串是否不等
      [ "$str1" != "$str2" ]

  • 数值的比较

  • -eq : 等于
    [ "$num1" -eq "$num2" ]

  • -ne : 不等于
    [ "$num1" -ne "$num2" ]

  • -lt : 小于
    [ "$num1" -lt "$num2" ]

  • -le : 小于或等于
    [ "$num1" -le "$num2" ]

  • -gt : 大于
    [ "$num1" -gt "$num2" ]

  • -ge : 大于或等于
    [ "$num1" -ge "$num2" ]

条件判断

  • if语句
      if [ condition ]; then
        commands
      fi
    
  • if-else语句
      if [ condition ]; then
        commands
      else
        commands
      fi
    

循环结构

  • for循环
      for var in list; do
        commands
      done
    
  • while循环
      while [ condition ]; do
        commands
      done
    

输入和输出

  • read命令: 从标准输入读取数据到变量中
    read variable

  • echo命令: 向标准输出打印文本
    echo "Hello, World!"

文件(夹)操作:

  • 文件夹操作

    • 创建文件夹
      mkdir directory_name

    • 删除空文件夹
      rmdir directory_name

    • 删除非空文件夹
      rm -r directory_name

  • 文件操作

    • 创建文件
      touch file_name

    • 删除文件
      rm file_name

命令替换:$(command) 执行命令并将其输出作为变量值

  • 示例:
      current_date=$(date)
      echo "Current date and time: $current_date"
    

错误处理:

  • 通过检查最后一个命令的退出状态($?)来处理错误
      command
      if [ $? -ne 0 ]; then
        echo "Command failed"
      fi
    

函数

  • 函数的定义
      function_name() {
          # 函数内部使用的$1等等是局部变量,不会和命令行参数的$1等冲突
          # 可以将命令行参数作为函数参数,这样就能达到函数内使用命令行参数的效果了
          # $1, $2, ..., $N 代表传递给函数的第1、2、...、N个参数
          echo "第一个参数: $1"
          echo "第二个参数: $2"
          # 可以根据需要使用更多的参数,也可以不使用参数
    
          local param="Hello, World!"  # 这是一个局部变量
          param1="Hello, World!"  # 这是一个全局变量
      }
    
  • 函数的调用
      # 带参函数的调用
      function_name "参数1" "参数2"
    
      # 无参函数的调用
      function_name
    

扩展

  • 定义数组

    • 定义数组并赋值
      arr=(apple banana cherry)

    • 定义空数组并逐个赋值

      arr=()       # 定义一个空数组
      arr+=("apple")
      arr+=("banana")
      arr+=("cherry")
    
    • 使用索引定义数组
      arr=() # 可写可不写
    
      arr[0]="apple"
      arr[1]="banana"
      arr[2]="cherry"
    
  • 访问数组

      #!/bin/bash
    
      # 定义一个数组
      fruits=(apple banana cherry)
    
      # 访问数组的元素
      echo "第一个水果是: ${fruits[0]}"
      echo "第二个水果是: ${fruits[1]}"
      echo "第三个水果是: ${fruits[2]}"
    
      # 输出所有数组元素
      echo "所有水果: ${fruits[@]}"
    
  • 获取字符串长度

      # 定义一个字符串
      str="Hello, world!"
    
      # 获取字符串的长度
      length=${#str}
      echo "字符串长度: $length"
    
  • 获取数组长度

      # 定义一个数组
      arr=(apple banana cherry)
    
      # 获取数组的长度(即元素的数量)
      length=${#arr[@]}
      echo "数组长度: $length"
    
  • 获取命令行参数

      #!/bin/bash
      # 命令行中的执行:sh ./script.sh arg1 arg2 
      echo "第一个参数: $1" # 输出arg1的名称
      echo "第二个参数: $2" # 输出arg2的名称
      echo "所有参数: $@"
      echo "参数数量: $#"
    
  • 列表的生成

    • 使用花括号扩展:
      # {1..5} 生成 1 2 3 4 5
      # {a..c} 生成 a b c
      # {A..C} 生成 A B C
      for i in {1..5}; do 
        echo $i
      done
    
    • 通过数组:
      arr=(apple banana cherry)
      for fruit in "${arr[@]}"; do
        echo $fruit
      done
    
  • [ ] 是标准的测试命令,用于简单比较

      # 单个测试条件
      if [ "$a" = "$b" ]; then
        echo "Equal"
      fi
    
      # 多个测试条件
      # 与 &&
      if [ "$a" -gt 10 ] && [ "$b" -lt 20 ]; then
        echo "条件都满足"
      fi
      # 或 ||
      if [ "$a" -eq 0 ] || [ "$b" -eq 0 ]; then
        echo "至少一个条件满足"
      fi
    
  • [[ ]] 是 Bash 扩展,支持更复杂的条件测试

      # 单个测试条件
      if [[ "$a" = "$b" ]]; then
        echo "Equal"
      fi
      # 多个测试条件
      if [[ "$a" == "hello" && "$b" =~ ^[0-9]+$ ]]; then
        echo "Match"
      fi
    
  • ( ) 用于创建子 Shell,运行括号内的命令在子 Shell 中

      (cd /tmp; ls)  # 在子 Shell 中执行 cd 命令,不影响当前 Shell
    
  • (( )) 用于算术运算,支持更复杂的数学表达式

      ((sum = 5 + 10))
      echo $sum  # 输出 15
    
      # 也可以进行数学比较,使用的是数学符号
      if (( a > 10 && b < 20 )); then
        echo "条件都满足"
      fi
    
      if (( a == 0 || b == 0 )); then
        echo "至少一个条件满足"
      fi
    
  • $(( )) 是算术扩展,用于计算表达式并返回结果

      a=5
      b=10
      sum=$((a + b))
      echo $sum  # 输出 15
    
posted on   Dylaris  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示