shell 变量的定义,赋值,运算

一、变量类型

1.1、自定义变量

1.定义变量

不能使用纯数字命名,不能使用横杠命名	
变量名=变量值
[root@localhost ~]# name=erha   		

2.引用变量

$变量名 或者 ${变量量名}

3.查看变量值

echo	$变量量名
[root@localhost ~]# echo $name
erha	

4.取消变量

[root@localhost ~]# unset  name
[root@localhost ~]# echo $name

5.作⽤用范围
仅在当前shell中有效

1.2、系统环境变量

1.定义环境变量

export	变量名
将⾃定义变量转换成环境变量,先定义,后准换
[root@localhost ~]# name=huahua
[root@localhost ~]# export name

2.引用环境变量

$变量名	或 ${变量名}	

3.查看环境变量

echo	$变量名
[root@localhost ~]# echo $name
huahua

4.取消环境变量

unset	变量量名	
[root@localhost ~]# unset name
[root@localhost ~]# env |grep name
#取消该变量后,查询系统环境变量中,就没name这个变量了。

5.变量作⽤用范围
在当前shell和⼦shell有效

1.3、系统环境变量
$1	$2	$3	$4	$5	$6 ...
#$1代表向脚本内传递的第一个位置参数,$2代表第二个,依次类推。	
1.4、预定义变量
$0	脚本⽂文件名 	
$* $@	所有的参数 	
$#	参数的个数	
$$	当前进程的 PID 	
$!	上一个后台进程的 PID 	
$?	上一个命令的返回值 0 表示成功
小脚本
[root@localhost ~]# cat var.sh 
#!/bin/bash
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"
echo "第四个参数:$4"
echo "所有参数为:$*"
echo "参数个数为:$#"
echo "当前进程ID为:$$"
echo "上一个进程ID为:$!"
echo "当前脚本名称为:$0"
echo "当前脚本执行结果:$?"
执行如下
[root@localhost ~]# sh var.sh 1 2 3 4 5 
第一个参数:1
第二个参数:2
第三个参数:3
第四个参数:4
所有参数为:1 2 3 4 5
参数个数为:5
当前进程ID为:8875
上一个进程ID为:
当前脚本名称为:var.sh
当前脚本执行结果:0

二、变量赋值

2.1、直接赋值
[root@localhost ~]# name=huahua
#注意等号两边不能有空格
2.2、从键盘读入
[root@localhost ~]# read 参数 变量名
可选参数
-p :提示信息
-t :等待时间
-n :读入字符数
小脚本
解压文件到指定位置
[root@localhost ~]# cat tr.sh 
#!/bin/bash
read -p "请输入要解压的文件,及解压目录:" src dst
if [ -e $src ];then
	tar -zxvf $src -C $dst
else
	echo "没有该文件..."
fi
2.3、强引用与弱引用
"" :弱引用,特殊字符依旧有特定含义。
[root@localhost ~]# age=18
[root@localhost ~]# echo "$age"
18

'' :强引用,所有字符被当作普通字符处理。
[root@localhost ~]# echo '$name'
$name

2.4、命令执行结果引用
`` :反引号,不过容易与引号混淆。
[root@localhost ~]# t1=`date +%F`
[root@localhost ~]# echo $t1
2020-01-20

$():$加小括号,不容易混淆,一般使用这种方式较多
[root@localhost ~]# t2=$(date +%F)
[root@localhost ~]# echo $t2
2020-01-20

三、数学运算

3.1、整数运算(expr)
加 减 乘 除 取余
+  -  \* /   % 

[root@localhost ~]# expr 1 + 1
2
[root@localhost ~]# expr 1 - 1
0
[root@localhost ~]# expr 1 \* 1
1
[root@localhost ~]# expr 1 / 1
1
[root@localhost ~]# expr 1 % 1
0
3.2、整数运算($(()))
加 减 乘 除 取余 幂运算
+  -  * /   %   **

[root@localhost ~]# echo $((1 + 2))
3
[root@localhost ~]# echo $((1 - 2))
-1
[root@localhost ~]# echo $((1 * 2))
2
[root@localhost ~]# echo $((1 / 2))
0
[root@localhost ~]# echo $((1 % 2))
1
[root@localhost ~]# echo $((1 ** 2))
1
3.3、整数运算($[])
与 $(())类似
[root@localhost ~]# echo $[1+2]
3
[root@localhost ~]# echo $[1-2]
-1
[root@localhost ~]# echo $[1*2]
2
[root@localhost ~]# echo $[1/2]
0
[root@localhost ~]# echo $[1**2]
1
3.4、整数运算(let)
加 减 乘 除 取余 幂运算
+  -  * /   %   **

[root@localhost ~]# let nu=2**4
[root@localhost ~]# echo $nu
16
3.5、小数运算
可以使用bc命令
[root@localhost ~]# echo "1.1"+"2.3"|bc
3.4

相关文章

系ubuntu 下面打开终端输入:sudo apt-get install sendmail...
依家我有1个软件goagent目录(大家懂得) 放在/home/gateman/...
其实我想讲的是 cp -L关于-L参数的解释:-L, --dereferenc...
原地址:http://www.rjgc.net/control/content/content.php?...
chroot,即 change root directory (更改 root 目录)。在 li...
简单解析下, stdin就是标准输入, stdout就是标准。举个例子...