1.总结变量的类型及含义?
变量类型:
1,自定义变量:
在当前的shell命令行界面设置的变量是局部变量
例:
num=1
name=zhangsan
含义:仅在当前shell生效.
2,环境变量:
全局变量,通过export 导出后的局部变量是全局变量
例:
export num=1
export name=zhangsan
含义:在所有shell中生效,但是重启ssh连接将会重置(即重新按照定义的变量文件加载)
3,位置变量:
即按照传入参数的位置信息,输出
例:
cat a.sh
$1
$3
$6
bash a.sh 1,2,3,4,5,6
含义:
将传入的参数按照要求显示
4.预定义变量:
系统定义的变量,相当于内置的命令
示例:
$0 # 显示当前脚本文件名
$* # 全返
$@ # 单返
$# # 返回参数的个数
$$ # 当前进程的PID
$! # 上一个后台进程的
$? # 返回上一个命令的执行状态
含义:
便捷式对shell的操作.
# 相关操作
(1) 引用变量: $变量名 或者 ${变量名}
(2) 查看变量: echo $变量名 set env printenv
(3) 取消变量: unset 变量名
2.实现课堂案例计算长方形面积?(6种方式)
[root@localhost dmll]# vim s.sh
#!/bin/bash
c=3
k=2
s1=$((c*k))
echo s1=$s1
s2=$[c*k]
echo s2=$s2
declare -i s3=$c*$k
echo s3=$s3
s4=`expr $c \* $k`
echo s4=$s4
s5=`echo $c*$k | bc`
echo s5=$s5
awk 'BEGIN{ c=3;k=2;print"s6=",c*k }'
let s7=$c*$k
echo s7=$s7
[root@localhost dmll]# bash s.sh
s1=6
s2=6
s3=6
s4=6
s5=6
s6=6
s7=6
#问题2
[root@localhost dmll]# vim url.sh
#!/bin/bash
#截取网站协议 截取网站访问账号信息
url=https://blog.csdn.net/weixin_45029822/article/details/103568815
echo ${url##*/}
echo ${url%%:*}
echo ${url:0:5}
[root@localhost dmll]# bash url.sh
103568815
https
https
3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现)
1)截取网站访问的协议
1.变量字符串截取
echo ${url:0:5}
# https
2.变量切片
echo ${url%:*} # 从右往左 , " # "从左往右
# https
3.expr # expr substr 字符串 起始位置 截取长度
expr substr $url 1 5
# https
4.cut命令的使用
echo $url | cut -nb 1-5 #字符截取
# https
echo $url | cut -d : -f 1 #区域截取
# https
2)截取网站访问账号信息
1.cut命令的使用
echo $url | cut -d / -f 4 # -f 选择区域四
# weixin_45029822
2.expr命令
expr substr $url 23 15 # 起始 长度
# weixin_45029822
3.变量切片
tmp=${url#*net/}
echo ${tmp%%/*} # 最长匹配
# weixin_45029822
4.变量字符串截取
echo ${url:22:15} # {变量:起始:长度}
# weixin_45029822