1.总结变量的类型及含义?
-
(1)局部变量(普通变量):只在某个特定范围生效的变量,比如只能在当前进程中使用的变量,只能在函数中使用的变量。
在命令行设置:在当前进程生效
-
(2)全局变量(环境变量):可以在创建他们的shell及其派生出来的子进程中使用(su 切换用户的时候会读取新的环境变量)。
自定义环境变量和bash内置的环境变量。
-
位置参数预定义变量
2.实现课堂案例计算长方形面积?(6种方式)
#!/bin/bash
# 方法1:直接使用变量计算
length=5
width=3
area=$((length * width))
echo "方法1:直接使用变量计算,面积为 $area"
# 方法2:通过用户输入获取变量值
read -p "请输入长度:" length
read -p "请输入宽度:" width
area=$((length * width))
echo "方法2:通过用户输入获取变量值,面积为 $area"
# 方法3:使用函数传参计算
calculate_area() {
local l=$1
local w=$2
local result=$((l * w))
echo $result
}
length=5
width=3
area=$(calculate_area $length $width)
echo "方法3:使用函数传参计算,面积为 $area"
# 方法4:使用bc命令进行浮点数计算
length=5
width=3
area=$(echo "scale=2; $length * $width" | bc)
echo "方法4:使用bc命令进行浮点数计算,面积为 $area"
3.定义变量url=https://blog.youkuaiyun.com/weixin_45029822/article/details/103568815(通过多种方法实现)
(1)截取网站访问的协议
(2)截取网站访问账号信息
#!/bin/bash
url="https://blog.youkuaiyun.com/weixin_45029822/article/details/103568815"
# 方法1:使用grep命令和正则表达式提取协议
protocol=$(echo "$url" | grep -o "^[^:]\+")
echo "方法1:使用grep命令和正则表达式提取协议,协议为 $protocol"
# 方法2:使用awk命令提取协议
protocol=$(echo "$url" | awk -F: '{print $1}')
echo "方法2:使用awk命令提取协议,协议为 $protocol"
# 方法3:使用sed命令提取协议
protocol=$(echo "$url" | sed -n 's/^\([^:]\+\):\/\/.*/\1/p')
echo "方法3:使用sed命令提取协议,协议为 $protocol"
# 方法4:使用正则表达式提取账号信息
account=$(echo "$url" | grep -o "//[^/]\+" | cut -c 3-)
echo "方法4:使用正则表达式提取账号信息,账号信息为 $account"
# 方法5:使用awk命令提取协议和账号信息
protocol_account=$(echo "$url" | awk -F: '{print $1}' | awk -F// '{print $2}')
echo "方法5:使用awk命令提取协议和账号信息,协议和账号信息为 $protocol_account"