在Bash中,变量的默认类型都是字符串类型的,Shell编程中,使用变量无需事先声。
变量的命名规范
变量名的命名须遵循如下规则:
- 首个字符必须为字母(a-z,A-Z)
- 中间不能有空格,可以使用下划线(_)
- 不能使用标点符号
- 不能使用bash里的关键字(可用help命令查看保留关键字)
变量的分类
- 用户自定义变量:用户可以自己定义。
- 环境变量:这种变量中主要保存的是和系统操作环境相关的数据。变量可以自动一,但是对系统生效的环境变量名和变量作用是固定的。
- 位置参数变量:这种变量主要是用来向脚本当中传递参数或者数据的,变量名不能自定义,变量作用是固定的。
- 位置参数变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。
定义变量
1 | 变量名=变量值 (等号 =两边不能带空格) |
变量调用
1 | echo $变量名 |
1 | 如下示例: |
变量叠加
1 | x=123 |
最终使用echo $x
将输出123456789
变量查看
1 | set |
变量的删除
1 | unset 变量名 (注意,此处不能加$符号) |
环境变量
环境变量和用户自定义变量的区别:
- 用户自定义变量只在当前的shell中生效,环境变量在当前shell和这个shell的所有子shell中生效。
- 环境变量是全局变量,用户自定义变量是局部变量。
- 对系统生效的环境变量名和变量作用是固定的。
设置环境变量
1 | export 变量名=变量值 |
查看环境变量
1 | set #查看所有变量 |
常用环境变量
1 | HOSTNAME:主机名 |
PATH变量
PATH
变量:系统查找命令的路径。
1 | echo $PATH #查看PATH变量的值 |
PS1变量
PS1
变量:命令提示符设置
1 | - \d 显示日期,格式为”星期 月 日“ |
当前语系查询
1 | # locale #查询当前语系 |
Linux中文支持
前提条件:正确安装中文字体和中文语系。
- 如果有图形界面,可以正确支持中文显示。
- 如果使用第三方远程工具,只要语系设定正确,可以支持中文显示。
- 如果使用纯字符界面,必须使用第三方插件(zhcon等)
位置参数变量
1 | $n n为数字,$0代表命令本身,$1~$9代表第一到第九个参数,十以上的参数需要用到大括号包含,如${10}。 |
$n 使用示例
sum.sh
1 |
|
执行上述sum.sh
脚本:
./sum.sh 100 200
输出为300
$* $@ $# 使用示例
sum1.sh
1 |
|
$* $@ 使用示例
sum2.sh
1 |
|
预定义变量
1 | $? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值非0(具体是哪个数,由命令自己决定),则证明上一个命令执行不正确了。 |
使用示例:1
2
3
4
5ls
echo $? #将在终端打印结果为0
ls QERTYUTIYKNB
echo $? #将在终端打印结果为2(非0)
其实,逻辑运算符
&&
(逻辑与运算)和||
(逻辑或运算)就是通过判断前一个命令的返回值来判断命令是否正确执行。
1 | ls && echo yes |