Linux 系统中 shell 变量的使用
文章目录
- (1)简介
- (2)变量分类
- (3)变量赋值
- (4)变量命名
- (5)变量引用
- (6)变量清除
- (7)变量只读
- (8)内部参数变量
- (9)环境变量
- (10)数组
(1)简介
变量是 shell 中用来存储数据的一种特殊标识符。变量可以用来保存用户输入的值,也可以用来保存计算结果。
(2)变量分类
shell 中的变量可以分为以下几类:
- 用户自定义变量:由用户自己定义、修改、使用。
- 环境变量:由系统维护,用于存储有关系统和用户的信息。
- 位置参数变量:通过命令行给程序传递执行参数。
- 内部参数变量:是 bash 预定义的特殊变量,用户不能修改。
(3)变量赋值
变量赋值的格式如下:
变量名=值
例如:
name="Josh"
(4)变量命名
变量名的命名规则如下:
- 变量名只能由字母、数字、下划线组成。
- 变量名不能以数字开头。
- 变量名不能是关键字和特殊字符。
(5)变量引用
变量引用的格式如下:
$变量名
例如:
echo $name
输出:
Josh
(6)变量清除
变量清除的格式如下:
unset 变量名
例如:
unset name
(7)变量只读
变量设置为只读的格式如下:
readonly 变量名
例如:
readonly name
(8)内部参数变量
shell 内部参数变量是一组特殊的变量,它们由 shell 自动设置和维护,用于存储有关 shell 和正在运行的命令的信息。
以下是一些常见的 shell 内部参数变量及其用途:
变量名 | 含义 |
---|---|
$0 | 保存当前脚本或命令的名称。 |
$1, $2, $3, … | 保存传递给脚本或函数的位置参数。 |
$# | 保存传递给脚本或函数的位置参数的数量。 |
$@ | 保存所有传递给脚本或函数的位置参数的列表。 |
$* | 保存所有传递给脚本或函数的位置参数的列表,作为一个单独的字符串。 |
$$ | 保存当前 shell 进程的进程 ID(PID)。 |
$? | 保存上一个命令的退出状态(返回值)。通常,0 表示成功,非零值表示出现了错误。 |
$! | 保存在后台运行的最后一个命令的 PID。 |
$_ $ | 表示在此之前执行的命令或脚本的最后一个参数 \ |
示例:
#!/bin/bash
echo "这个脚本的名字是: $0"
echo "参数一共有: $#"
echo "参数的列表是: $@"
echo "参数的列表是: $*"
echo "第一个位置参数是: $1"
echo "第二个位置参数是: $2"
echo "第三个位置参数是: $3"
执行结果:
[root@localhost shell]# sh 1.sh 1 2 3 4 5 6
这个脚本的名字是: 1.sh
参数一共有: 6
参数的列表是: 1 2 3 4 5 6
参数的列表是: 1 2 3 4 5 6
第一个位置参数是: 1
第二个位置参数是: 2
第三个位置参数是: 3
标题 | Linux 系统中 shell 变量的使用 |
---|---|
简介 | 变量是 shell 中用来存储数据的一种特殊标识符。变量可以用来保存用户输入的值,也可以用来保存计算结果。 |
分类 | 用户自定义变量、环境变量、位置参数变量、内部参数变量 |
赋值 | 变量名=值 |
命名 | 只能由字母、数字、下划线组成;不能以数字开头;不能是关键字和特殊字符 |
引用 | $变量名 |
清除 | unset 变量名 |
只读 | readonly 变量名 |
内部参数变量 | $0、KaTeX parse error: Expected 'EOF', got '#' at position 9: 1、2、...、#̲、@、*、、?、 ! 、 !、 !、_ |
常见环境变量 | PWD、PATH、USER、LOGNAME、SHELL、HOME |
应用 | 保存用户输入的值、保存计算结果、传递参数给命令或脚本、控制命令或脚本的执行 |
退出返回状态 | 保存在变量 ? 中 |
其他示例
[root@localhost]# echo $$ #显示当前进程的pid
2163
[root@localhost]# echo $? #显示上一条命令的返回值
0
[root@localhost ]# bash #调用子shell
[root@localhost]# echo $$
4539
[root@localhost]# exit 1 #指定返回值并返回父shell
exit
命令状态返回值:
shell 命令的退出状态(返回值)保存在变量 ?
中。
- 0 表示成功
- 1 表示通用错误或执行失败
- 126 表示命令或脚本没权限
- 127 表示命令没找到
1、通常,0 表示成功,非零值表示出现了错误。例如:
[root@localhost ~]# echo "Hello, world!"
Hello, world!
[root@localhost ~]# echo $?
0
2、命令执行失败,返回1
[root@localhost shell]# chmod +x 2.sh
chmod: 无法访问"2.sh": 没有那个文件或目录
[root@localhost shell]# echo $?
1
3、权限不够,返回126
[root@localhost shell]# ./1.sh
-bash: ./1.sh: 权限不够
[root@localhost shell]# echo $?
126
4、执行不存在的命令,提示返回127
[root@localhost shell]# eoch $USER
-bash: eoch: 未找到命令
[root@localhost shell]# echo $?
127
以上返回值,常用于判断命令是否执行成功,例如:
创建文件的脚本中,如果$?的返回值,ne代表不等于0,不等于0那么就是执行失败。
#!/bin/bash
read -p "输入需要创建的文件名:" file
touch $file
if [ $? -ne 0 ];then echo "文件创建错误"
elseecho "成功创建 $file 文件"
fi
结论:退出返回状态可以用于判断命令的执行结果。
(9)环境变量
环境变量是保存在系统内存中的数据,可以被所有程序访问。环境变量可以用于存储各种信息,例如当前工作目录、可执行程序的搜索路径、用户的名称等。
常见环境变量
变量名 | 含义 |
---|---|
PWD | 保存当前工作目录。 |
PATH | 保存可执行程序的搜索路径。 |
USER | 保存当前用户的名称。 |
LOGNAME | 保存当前用户的登录名。 |
SHELL | 保存当前 shell 的类型。 |
HOME | 保存当前用户的主目录。 |
使用
环境变量可以通过 echo
命令来查看:
Bash
echo $PWD
输出:
/home/user
环境变量也可以在命令行中使用,例如:
Bash
cd $HOME
这条命令将切换到当前用户的主目录。
补充
除了上述常见环境变量之外,还有一些其他的环境变量,例如:
变量名 | 含义 |
---|---|
HISTSIZE | 保存历史命令的数量。 |
HISTFILESIZE | 保存历史命令的文件大小。 |
LANG | 保存系统语言环境。 |
LC_ALL | 保存系统的区域设置。 |
TERM | 保存终端类型。 |
EDITOR | 保存默认编辑器。 |
这些环境变量可以用于控制 shell 的行为或提供给程序使用。
(10)数组
shell 中的数组是一种特殊的变量,可以保存多个值。数组的元素可以是任何数据类型,包括字符串、数字、布尔值等。
数组的定义格式如下:
变量名=(元素1 元素2 ... 元素n)
1、例如,定义一个名为 numbers
的数组,其中包含 1、2、3 三个元素:
numbers=(1 2 3)
数组的元素可以通过索引来访问。索引从 0 开始,例如:
echo ${numbers[0]}
输出:
1
读取全部元素:
echo ${numbers[@]}
输出
1 2 3
也可以使用 for
循环来遍历数组:
for i in "${numbers[@]}"
doecho "$i"
done
输出:
1
2
3
实验示例
# 定义一个名为 `fruits` 的数组,其中包含 "apple"、"banana"、"orange" 三个元素
fruits=(apple banana orange)# 遍历数组
for fruit in "${fruits[@]}"
doecho "$fruit"
done# 获取数组的长度
echo ${#fruits[@]}
输出:
apple
banana
orange
3
shell 数组可以用于存储多个值,可以用于各种场景。掌握 shell 数组的使用方法,可以帮助我们更好地使用 shell。