【Linux shell】shell中的变量——构建脚本逻辑的基石
目录
系统变量
自定义变量
只读变量
数组变量
特殊变量
🔥个人主页 🔥
😈所属专栏😈
系统变量
系统变量是 Linux 系统预定义的全局变量,用于存储与系统环境、用户会话相关的关键信息
变量名 | 作用描述 | 示例值 |
---|---|---|
$PATH | 命令搜索路径,多个路径用冒号分隔 | /usr/bin:/bin:/usr/sbin |
$HOME | 当前用户的主目录 | /home/username |
$USER | 当前登录的用户名 | username |
$SHELL | 当前使用的 Shell 程序路径 | /bin/bash |
$PWD | 当前工作目录 | /home/username/projects |
$OLDPWD | 上一次的工作目录(cd - 命令会使用) | /home/username/Documents |
1.当前用户的主目录 echo $HOME
echo $HOME
2.当前工作目录 echo $PWD
echo $PWD
3.当前使用的 Shell 程序路径 echo $SHELL
echo $PWD
3.当前登录的用户名 echo $USER
echo $USER
3.命令搜索路径,多个路径用冒号分隔echo $PATH(系统终端可执行命令的位置,对应bashrc中的export PATH)
echo $PATH
自定义变量
- 变量与值中间不能有空格
- 使用$+变量名访问对应变量的值,例如$a
- 变量后值默认是字符串
- 若变量的值有空格,应该用引号包围
- unset撤销变量的值班
a=3
echo $a
a=3
unset a
echo $a
a="hello world"
echo $a
只读变量
语法:readonly 变量(只能读,不能修改)
readonly PI=3.14
echo $PI
错误:不能修改只读变量
readonly PI=3.14
PI = 2
echo $PI
数组变量
语法:数组名=(元素1,元素2,元素3)
- 用法1:访问数组中的元素 ,访问第n个元素${数组名[n]}
- 用法2:输出数组中的元素 ,${数组名[@]}
- 用法3:输出数组中的元素个数 ,${#数组名[@]}
fruits=("apple" "banana" "cherry")
echo "第二个元素: ${fruits[1]}"
echo "所有元素: ${fruits[@]}"
echo "元素个数: ${#fruits[@]}"
echo $0
特殊变量
变量 | 含义 |
---|---|
$0 | 脚本或 Shell 本身的名称 |
$1-$9 | 脚本的第 1 到 9 个参数,${10} 表示第 10 个参数 |
$# | 参数的数量 |
$* | 所有参数(作为单个字符串) |
$@ | 所有参数(作为独立字符串) |
$? | 上一个命令的退出状态码(0 = 成功,非 0 = 失败) |
$$ | 当前 Shell 进程的 PID |
$! | 最后一个后台进程的 PID |
1.$0 为脚本名称
echo $0
2.$1 ,$2 为脚本的第一个参数第二个参数,以此类推
echo "$0 $1 $2"
3.$#参数的数量
echo $#
4.$@所有参数(作为独立字符串),$*所有参数(作为单个字符串)
echo "$@ $*"
5.$?
上一个命令的退出状态码(0 = 成功,非 0 = 失败)
b=hello world
echo $?
非0执行失败,因为有空格时未加引号
b="hello world"
echo $?
返回0说明执行成功