1.变量的定义
变量是由变量名和变量值组成,两者之间用符号(=)连接。
变量命名规则:
变量名只能包含字母(a-z,A-Z)、数字(0-9)和下划线(_)。
变量名不能以数字开头。
避免使用Shell保留关键字,如if、while等。(命名时希望大家用实际意义上的作用来命名。)
#定义一个变量 name="zhangsan" #定义一个数字变量 age=2 #定义一个日期变量 date="2024-3-1 15:18:58"
2.变量的引用
使用$符号来引用变量的值
# 输出变量值 echo $name # 输出结果:zhangsan echo $age # 输出结果:2 echo $date # 输出结果:2024-3-1 15:18:58
3.变量的类型
1.字符串变量:存储文本数据
2.数字变量:存储数字数据
3.数组变量:存储多个值
4.环境变量:在所有Shell中都可以使用的变量
5.位置参数变量:脚本或函数中,可以通过 $1
, $2
, ... 等方式引用传递给脚本或函数的参数。$0
表示脚本的名称,$#
表示传递给脚本或函数的参数个数,$@
表示所有参数的列表。
4.变量赋值
# 直接赋值 name="hello" # 命令输出赋值 age=`date +%Y` # 变量替换 today=`date +%Y-%m-%d` echo "今天是 $today" # 输出结果:今天是 2024-03-01
5.变量的运算
Shell支持对变量进行简单的数学运算,例如加减乘除等。
基本运算符
运算符 | 含义 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法 |
% |
取余 |
#声明变量 [root@localhost ~] num1=10 [root@localhost ~] num2=20 #加法 [root@localhost ~] sum=$((num1+num2)) [root@localhost ~] echo $sum 30 #减法 [root@localhost ~] jian=$((num2-num1)) [root@localhost ~] echo $jian 10 #乘法 [root@localhost ~] cheng=$((num1*num2)) [root@localhost ~] echo $cheng 200 #除法 [root@localhost ~] chu=$((num2/num1)) [root@localhost ~] echo $chu 2 #求余 [root@localhost ~] yu=$((num2%num1)) [root@localhost ~] echo $yu 0
自增自减
运算符 | 含义 |
++ |
自增 |
-- |
自减 |
[root@localhost ~] num=10 [root@localhost ~] echo $num 10 [root@localhost ~] ((num++)) [root@localhost ~] echo $num 11 [root@localhost ~] echo $num 11 [root@localhost ~] ((num++)) [root@localhost ~] echo $num 12 [root@localhost ~] ((num--)) [root@localhost ~] echo $num 11 [root@localhost ~] ((num--)) [root@localhost ~] echo $num 10
运算符优先级
Shell运算符的优先级与C语言相同。
# 运算符优先级 num1=10 num2=20 result=$((num1 + num2 * 2)) echo "result = $result" # 输出结果:result = 50
字符串连接
str1="Hello" str2="World" echo "$str1 $str2" # 输出结果:Hello World
expr
命令
命令用于进行表达式求值和字符串操作
[root@localhost ~] num1=10 [root@localhost ~] num2=20 [root@localhost ~] sum=$(expr $num1 + $num2) [root@localhost ~] echo $sum 30
let
命令
let
命令也用于执行算术运算,并且它允许在表达式中使用变量名而不需要 $
符号。
let "result = a + b" [root@localhost ~] let "sum= sum +num1" [root@localhost ~] echo $sum 40
浮点数运算
Shell本身对浮点数运算支持较差,通常需要借助外部工具如bc
(计算器)。
[root@localhost ~] sum=$(echo "$a + $b" | bc) [root@localhost ~] echo $sum 2.8
6.变量的删除
使用unset命令删除变量。
# 删除变量 unset name echo $name # 输出结果:空白 unset age echo $age # 输出结果:空白
补充知识
获取环境变量
使用env命令获取所有环境变量的列表。
# 获取环境变量 env
设置环境变量
使用export命令将变量导出为环境变量。
# 设置环境变量 export name