乐水悠悠

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

Shell 是指一种应用程序,用户通过这个程序访问操作系统内核的服务。

  • Windows Explorer,图形界面shell
  • Ken Thompson 的 sh,第一种Unix Shell
  • Bourne Again Shell(/bin/bash)
    Shell 脚本一般指能在sh或bash等Unix命令行shell下运行的脚本,以“.sh”为后缀。

语法

约定

#! 告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell

#! /bin/bash
echo "hello world"
  • 单行注释: # 后面跟空格,可以注释一整行
  • 多行注释: 冒号“:”后跟单引号将多行括起来
# 这是单行注释

:'
注释部分
注释部分
'

变量

  1. 定义变量
    变量的声明方式是var_name=var_value

    • 变量名只包含字母(大小写敏感)、数字和下划线 _,数字不能在开头
    • 等号前后不能有空格
  2. 只读变量
    使用"readonly"修饰,则变量值不会被改变。readonly var_name

  3. 删除变量
    使用"unset"可以删除变量,删除后变量不能再被使用

  4. 变量类型:

    • 字符串: 单引号或者双引号括起来。str1='abc' str2="def"
    • 整数类型: file_count=5
    • 索引数组: 用小括号括起来,以空格分隔。my_arr=('aa' "bb" 123)
    • 关联数组(字典): 需要先声明,declare -A 数组名。

    shell 脚本只支持一维数组

  5. 环境变量
    由操作系统或用户设置的特殊变量,用于配置 Shell 的行为和影响其执行环境

    • PATH:包含了操作系统搜索可执行文件的路径
  6. 特殊变量

    • $0 表示脚本的名称
    • $1, $2,...,$n 等表示脚本的参数
    • $# 表示传递给脚本的参数数量
    • $? 表示上一个命令的退出状态

运算符

假设a=10, b=20

  • 算术运算需要expr命令,且只支持整数。
运算符 说明 举例
+ 加法 `expr $a + $b` 结果为 30。
- 减法 `expr $a - $b` 结果为 -10。
* 乘法 `expr $a * $b` 结果为  200。
/ 除法 `expr $b / $a` 结果为 2。
% 取余 `expr $b % $a` 结果为 0。
= 赋值 a=$b 把变量 b 的值赋给 a。
== 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false。
!= 不相等。用于比较两个数字,不相同则返回 true。 [ $a != $b ] 返回 true。
  • 关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
  • 布尔运算符
运算符 说明 举例
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
-o 或 || 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 或 && 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
posted on 2025-11-14 16:23  金币闪耀  阅读(0)  评论(0)    收藏  举报