变量:bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能,简单说就是让一个特定的字符串代表不固定的内容
变量的类型有: 预定义变量 环境变量 自定义变量 位置变量
预定义变量:
预定义的特殊变量有着特殊的含义,用户不可以更改,所有的预定义变量都由$符号和另外一个符号组成。
常用的预定义特殊变量如下:
$$ 当前进程PID
$? 命令执行后的返回状态:0 为执行正确,非 0 为执行错误
$# 位置参数的数量
$* 所有位置参数的内容
$@ 显示所有的参数
$! 上一个后台进程的PID (wait命令中使用)
示例:
[root@CSDN ~]# echo $$ #当前进程的进程号(PID)
环境变量:
shell在开始执行时已经定义好的,就是系统执行环境的一些设置
# env #env是 environment (环境) 的简写,所有的环境变量(包含自定义的环境变量)
# set #列出系统中所有的变量,包括自定义的变量
export 变量名 #使自定义的变量成为环境变量,才使用这个参数。环境变量拥有可继承性:export之后就拥有继承性环境变量可以被向下继承
示例:
[root@CSDN ~]# vim /etc/profile.d/test.sh
IPADDT=192.168.1.1-
[root@CCSDN ~]# source /etc/profile.d/test.sh #让环境变量生效
[root@CSDN ~]# echo $IPADDT
192.168.1.1
常用环境变量:USER UID HOME HOSTNAME PWD PS1 PATH
PATH:存储所有命令所在的路径
自定义变量:
就是自己设置的变量只能在当前终端和脚本中使用
变量名称=值 #定义变量
#变量名称:只能由字母,数字,下划线组成,不能以数字开头;
#注意:应该让变量名称有意义;
= 赋值符号 前后不能有空格 ;
示例:
[root@CSDN ~]# a=100
[root@CSDN ~]# echo $a
100
查看变量: echo $变量名
取消变量: unset 变量名,仅在当前shell中有效
位置变量:
位置变量也叫位置参数,在脚本代码中调用通过命令行传递给脚本的参数
$1 $2 $3 $... #分别对应传递给脚本内容里面的第1、第2等参数
示例:
[root@CSDN ~]# vim weizhi.sh
#!/usr/bin/bash
echo 我的第一个位置参数是:$1
echo 我的第二个位置参数是:$2
echo 我的第三个位置参数是:$3
echo 我的第四个位置参数是:$4
echo 一共有 $# 个位置参数
echo 你输入的参数分别是:$*
[root@CSDN ~]# chmod +x weizhi.sh
[root@CSDN ~]# ./weizhi.sh 1 3 4 6
我的第一个位置参数是:1
我的第二个位置参数是:3
我的第三个位置参数是:4
我的第四个位置参数是:6
一共有 4 个位置参数
你输入的参数分别是:1 3 4 6