利用双引号赋值
[root@Hincy:~]# A=CentOS6.5
[root@Hincy:~]# B=$A
[root@Hincy:~]# echo $B
CentOS6.5
[root@Hincy:~]# B=$A Server //未加引号时报错
-sh: Server: not found
[root@Hincy:~]# B="$A Server"
[root@Hincy:~]# echo $B
CentOS6.5 Server
常见的转义字符
[root@Hincy:~]# A="a\tb\tc\nd\te"
[root@Hincy:~]# echo $A
a\tb\tc\nd\te
[root@Hincy:~]# echo -e $A \\添加-e选项解析特殊转义符
a b c
d e
[root@Hincy:~]# FN="\\\""
[root@Hincy:~]# touch /$FN.txt
[root@Hincy:~]# ls -lh \\\".txt //可以在命令行内嵌入变量的值
-rw-r--r-- 1 root root 0 Jan 1 00:12 \".txt
利用单引号赋值
[root@Hincy:~]# A=CentOS6.5
[root@Hincy:~]# B='$A Server' //$被视为普通字符
[root@Hincy:~]# echo $B //确认赋值结果
$A Server
[root@Hincy:~]# read -p "svr5 login:" YOUR_NAME
svr5 login:Hincy
[root@Hincy:~]# echo $YOUR_NAME
Hincy
静默取值
[root@Hincy:~]# read -s -p "Password:" YOUR_PASS
Password:
[root@Hincy:~]# echo $YOUR_PASS
Hincy
read取值示例
[root@Hincy:~]# cat dirbak.sh
#!/bin/bash
read -p "pls confirm the dir you want to backup:" SDIR
tar zcpPf /opt/dirbak.tgz $SDIR
[root@Hincy:~]# ./root/dirbak.sh
pls confirm the dir you want to backup: /boot
[root@Hincy:~]# ls -lh /opt/dirbak.tgz
-rw-r-r--. 1 root root 22M 1月 21 16:56/opt/dirbak.tgz
[root@Hincy:~]# X=123
[root@Hincy:~]# export Y=456
[root@Hincy:~]# bash
[root@Hincy:~]# echo $X,$Y
,456
[root@Hincy:~]# exit
exit
[root@Hincy:~]# echo $X,$Y
123,456
取消全局变量
[root@Hincy:~]# export -n Y
[root@Hincy:~]# bash
[root@Hincy:~]# echo $Y
456
[root@Hincy:~]#
基本运算类别
四则运算
取余数运算
计算并获取结果
[root@Hincy:~]# X=48;Y=21
[root@Hincy:~]# expr $X + 100 - $Y \* 2 / 7
142
[root@Hincy:~]# expr $X / $Y
2
[root@Hincy:~]# expr $X % $Y
6
算式替换
[root@Hincy:~]# X=48;Y=21
[root@Hincy:~]# echo $[X+100-Y*2/7] //混合运算,乘法优先
142
[root@Hincy:~]#echo $[X/Y]
2
[root@Hincy:~]#echo $[X%Y]
6
[root@Hincy:~]#echo $[10**3]
1000
整数变量的自增处理
自增表达式
运算类别 | 对应的表达式 | 应用示例 |
---|---|---|
加法 | i+=2或者i=i+2 | echo $[i+=2] |
减法 | i-=2或者i=i-2 | echo $[i-=2] |
乘法 | i*=2或者i=i*2 | echo $[i*=2] |
除法 | i/=2或者i=i/2 | echo $[i/=2] |
取模 | i%=2或者i=i%2 | echo $[i%=2] |
i+=1的极简化表示
[root@Hincy:~]# X=48;Y=21
[root@Hincy:~]# echo $[++X],$[--Y]
49,20
[root@Hincy:~]# echo $X,$Y
49,20
++i与i++的区别
[root@Hincy:~]# X=48;echo $[++X],$X
49,49
[root@Hincy:~]# X=48;echo $[X++],$X
48,49
使用let命令操作变量
[root@Hincy:~]# X=48;Y=21
[root@Hincy:~]# let X++,Y/=3
[root@Hincy:~]# echo $X,$Y
49,7
使用随机整数
环境变量RANDOM
[root@Hincy:~]# echo $RANDOM
24546
[root@Hincy:~]# echo $RANDOM
1926
[root@Hincy:~]# echo $RANDOM,echo $RANDOM,echo $RANDOM
10446,7516,3136
扩大随机数范围
[root@Hincy:~]# echo $[RANDOM*RANDOM]
244008
[root@Hincy:~]# echo $[RANDOM*RANDOM]
178013197
[root@Hincy:~]# echo $[RANDOM*RANDOM]
194682752
减少随机数范围
[root@Hincy:~]# echo $[RANDOM%1000]
526
[root@Hincy:~]# echo $[RANDOM%1000]
14
[root@Hincy:~]# echo $[RANDOM%1000]
237
限制随机数区间
[root@Hincy:~]# echo $[RANDOM%1000+1]
347
[root@Hincy:~]# echo $[RANDOM%1000+1]
24
[root@Hincy:~]# echo $[RANDOM%1000+1]
105
整数序列
使用seq命令
根据指定条件输出一组整数
seq命令格式
从1开始的一组整数
[root@Hincy:~]# seq 4 //从1-4的整数序列,每行一个
1
2
3
4
[root@Hincy:~]# seq -s' ' 10 //从1-10的整数序列,以两个空格分隔
1 2 3 4 5 6 7 8 9 10
限定区间的一组整数
[root@Hincy:~]# seq 8 10
8
9
10
[root@Hincy:~]# seq -w 8 10
08
09
10
限定区间及步长
[root@Hincy:~]# seq 10 20 50
10
30
50
[root@Hincy:~]# seq -w -s' ' 0 50 500
000 050 100 150 200 250 300 350 400 450 500
数值运算的局限性
[root@Hincy:~]# expr 123 + 45.678
expr:参数数目错误
[root@Hincy:~]# echo $[3.14*2]
-bash:3.14*2:syntax error:invalid arithmetic operator(error token is".14*2")
使用bc计算器
[root@Hincy:~]# bc
12.34*56.78
700.66
scale=4
12.34*56.78
700.6652
quit
[root@Hincy:~]#
bc计算器的免交互
[root@Hincy:~]# A=12.34
[root@Hincy:~]# echo "$A*56.789" | bc
700.776
[root@Hincy:~]# echo "scale=4;$A*56.789;5/3" | bc
700.7762
1.6666
小数值的比较
[root@Hincy:~]# A=12.34;B=56.78
[root@Hincy:~]# echo "$A<=$B" | bc
1
[root@Hincy:~]# echo "$A>$B" | bc
0
以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!