bash变量

变量的基本解释

变量就是存储空间的内容引用到需要使用的地方,变量名存储就是内存中资源对应的某个地址。

变量赋值:NAME=VALUE
>把VALUE存储到NAME指向的内存空间中;
变量为什么有类型?
- :存储空间、存储格式、参与的运算、……
- 类型不同决定对数据的处理方式不同
变量命名:只能使用字母、数字和下划线;而且不能以数字开头;
  • 变量名:见名知义;不能使用程序保留字,例如if、case、then、fi、esac、for、while、until、break、continue等等;
  • 变量引用
    • NAME,NAME
  • 变量替换:把变量引用符号出现的位置替换为其指向的内存空间中的数据;
bash变量种类:
  • 本地变量:作用域为当前shell进程;不包括其子进程;
    • set 变量名=值
  • 环境变量:使用域为当前shell进程及其子进程;
    • 注意:bash内嵌了许多环境变量,名称为全大写字母,例如UID、HOME、PWD、SHELL, PATH, HISTSIZE等等;
    • 环境变量查看:
      • export, declare -x
      • env, printenv
  • 撤销环境变量:
    • unset NAME
  • 局部变量

    • 作用域:当前代码块
      • local 变量名=值
  • 位置参数变量:

在命令行地方输入脚本参数,第一个参数对应脚本变量$1,第二个对应$2依次自动对应
  • 特殊变量
保持某些特殊数据
        $? 上一个命令执行状态返回值
        $# 参数的个数
        $* 参数列表,引用所有的位置参数
        $@ 参数列表,引用所有的位置参数
        $0  命令本身  脚本本身
  • 本地变量:

变量赋值:NAME=VALUE
查看变量:set
撤销变量:unset NAME

注意:此处非为变量引用,因此不能使用$;
所有的本地变量在shell进程终止时,会被自动撤销;

  • 只读变量:常量

    • (1) declare -r NAME
    • (2) readonly NAME
  • 变量声明和赋值:

    • declare -x NAME[=VALUE]
    • export NAME[=VALUE]

不支持重新赋值,也不支持撤销操作;

# declare -r username=`whoami`
# echo $username
root
# unset username
-bash: unset: username: cannot unset: readonly variable
### 如何在Bash脚本中定义和使用变量 #### 定义变量Bash 中,可以通过简单的赋值语句来定义变量。需要注意的是,在变量名和等号之间不能有任何空格,并且变量名只能由字母、数字和下划线组成,不能以数字开头[^2]。 以下是几种常见的变量定义方法: 1. **字符串变量** 如果要定义一个字符串类型的变量,可以直接赋值: ```bash my_variable="Hello, World!" ``` 2. **数值变量** 对于整数或其他数值型数据,也可以直接赋值: ```bash my_number=42 ``` 3. **引用其他变量** 可以在一个新变量中引用已经存在的变量值: ```bash another_variable="$my_variable something extra" ``` 4. **命令替换赋值** 使用命令的输出作为变量的值时,可以采用以下形式: ```bash file_contents=$(cat somefile.txt) ``` #### 访问变量 为了访问变量的内容,需要在其前面加上美元符号 (`$`) 或者 `${}` 结构。推荐使用后者,尤其是在复杂表达式中,以便更清晰地标记变量边界[^2]。 ```bash echo "$my_variable" ``` 如果变量值可能包含特殊字符或空白符,建议始终用双引号包裹变量,防止意外解析错误。 #### 设置环境变量 除了普通的脚本变量外,还可以通过 `export` 命令将某个变量提升为全局可用的环境变量。这使得该变量不仅限于当前 Shell 脚本内部,还能传递到其派生的所有子进程中[^1]。 示例如下: ```bash export MY_ENV_VAR="This is an environment variable." ``` 之后即可像普通环境变量一样调用它: ```bash echo "$MY_ENV_VAR" ``` #### 特殊注意事项 - **只读变量** 利用 `readonly` 关键字可声明不可更改的只读变量,这种特性非常适合用来保存固定不变的数据项,例如数学常量 π 等[^5]。 ```bash readonly PI=3.141592653589793 ``` - **局部作用域与全局作用域的区别** 默认情况下,未加修饰词的变量仅存在于定义它的函数体内(如果是函数内的变量),而显式标记为 exported 后则成为整个系统的共享资源。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值