变量的赋值:
- 显示赋值
示例:
Ip1=192.168.12.134
School=”Beijing okokok”
Today1=`date +%F`
Today2=”$(date +%F) ”
- Read从键盘读入变量值
Read 变量名
Read -p “提示信息:”变量名
Read -t 5 -p “提示信息:”变量名
Read -n 2 “变量名” 只让熟两个字符
示例:
#!/bin/bash
#read -p "你的姓名是: " name
#read -p "你的性别是: " sex
#read -p "你的年龄是: " age
#echo "你的姓名是:$name,性别:$sex,年龄:$age"
#read -p "输入你的姓名,性别,年龄[ e. g. zhansan m 20 ]" name sex age
#echo "你的姓名是:$name,性别:$sex,年龄:$age"
示例:
#!/bin/bash
back_dir1=/var/backup
read -p "请你输入你的备份的目录:" back_dir2
echo $back_dir1
echo $back_dir
定义或引用变量时注意事项:
“ ” --------------- 弱引用
‘’ --------------- - 强引用
单引号里面没有变量;
命令替换等价于$()反引号中的shell命令会被先执行
touchdate +%F-%H:%M:S%
_file1.txt
touch ( d a t e + (date +%F- (date+H:%M:%S)_file2.txt
df -h | grep ‘/$’ | awk ‘{print $4}’
disk_free1=` df -h | grep ‘/$’ | awk ‘{print $4}’`
disk_free2=$( df -h | grep ‘/$’ | awk ‘{print $4}’)
变量的运算:
1.整数运算
方法一: expr
expr 1+2
expr $num1 + $num2 + - \* / %
方法二:$(())
echo $(($num1+$num2)) + - \* / %
echo $((num1+num2))
echo $((5-3*2))
echo $((2**3))
sum=$((1+2)); echo $sum
方法三:$[ ]
echo $[5+2] + - \* / %
echo $[5**2]
方法四:let
Let sum=2+3;echo $sum
Let i++;echo $i
2.小数运算
echo “2*4”|bc
echo “2^4”|bc
echo “scale=2;6/4”|bc 6除以4保留2位小数
awk ‘BEGIN{print 1/2}’
echo “print 5.0/2”| python
例子:
查看系统当前使用百分比
free -mh 人性化查看内存使用信息
答案:
vim mem_use.sh
#!/bin/bash
mem_used=`free -m | grep '^Mem:'|awk '{print $3}'`
mem_toal=`free -m | grep '^Mem:'|awk '{print $2}'`
mem_percent=$((mem_used*100/mem_toal))
echo "当前内存使用百分比: $mem_percent%"
列子2:
Ping 一个ip只ping5次
答案:
#!/bin/bash
ip=152.136.123.149
i=1
while [ $i -le 5 ]
do
ping -c1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip is up"
fi
let i++
done
变量“内容”的删除和替换(拓展)
=内容的删除=
[root@localhost ping]# url=www.yyy.com.cn
[root@localhost ping]# echo ${#url} 获取变量的长度
14
[root@localhost ping]# echo ${url} 标准查看
www.yyy.com.cn
[root@localhost ping]# echo ${url#.} 从前往后,最短匹配
yyy.com.cn
[root@localhost ping]# echo ${url##.} 从前往后,最长匹配,贪婪匹配
cn
[root@localhost ping]# echo ${url%.} 从后往前,最短匹配
www.yyy.com
[root@localhost ping]# echo ${url%%.} 从后往前,最长匹配,贪婪匹配
www
索引及切片
[root@localhost ping]# echo ${url}
www.yyy.com.cn
[root@localhost ping]# echo ${url:0:5}
www.y
[root@localhost ping]# echo ${url:5:5}
yy.co
[root@localhost ping]# echo ${url:5}
yy.com.cn
=内容的替换=
[root@localhost ping]# echo ${url/y/n}
www.nyy.com.cn
[root@localhost ping]# echo ${url//y/n}
www.nnn.com.cn
=内容的替代=
[root@localhost ping]# unset var1
[root@localhost ping]# echo ${var1}
[root@localhost ping]# echo ${var1-aaaa}
aaaa
[root@localhost ping]# var2=111
[root@localhost ping]# echo ${var2-bbbb}
111
[root@localhost ping]# var3=
[root@localhost ping]# echo ${var3-cccc}
[root@localhost ping]# unset var1
[root@localhost ping]# unset var2
[root@localhost ping]# unset var3
[root@localhost ping]# var2=
[root@localhost ping]# var3=111
[root@localhost ping]# echo ${var1:-aaaa}
aaaa
[root@localhost ping]# echo ${var2:-aaaa}
aaaa
[root@localhost ping]# echo ${var3:-aaaa}
111
自己看看
[root@localhost ping]# echo ${var3+aaaa}
aaaa
[root@localhost ping]# echo ${var3:+bbbb}
bbbb
[root@localhost ping]# echo $(var3=cccc)
[root@localhost ping]# echo ${var3=cccc}
111
[root@localhost ping]# echo ${var3:=cccc}
111
[root@localhost ping]# echo ${var3?dddd}
111
[root@localhost ping]# echo ${var3:?dddd}
111
========================================================
${变量名-新的变量值}
变量没有被赋值:会使用“新的变量值”替代
变量有被赋值(包括空值):不会被替代