一、练习内容
1.总结变量的类型及含义?
2.实现课堂案例计算长方形面积?(6种方式)
3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现)
1)截取网站访问的协议
2)截取网站访问账号信息
二、变量的内容
变量的类型及含义
1.1什么是变量
顾名思义,变量就是程序设计语言中的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。从本质上讲,变量就是在程序中保存用户数据的一块内存空间而变量名就是这块内存空间的地址。
在程序的执行过程中,保存数据的内存空间的内容可能会不断地发生变化,但是,代表内存地址的变量名却保持不变。
1.2变量的命名
(1)在shell中变量名必须以字母、数字、下划线、组成。并且只能由字母或者下划线开头。
(2)变量名=变量值 “=”前后不能有空格
(3)驼峰语法:第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母(通俗理解:自己定义的变量名看起来高低起伏大小写明了)
1.3变量的分类
(1)自定义变量(只在当前shell中有效)
-------定义变量:变量名=变量值
-------引用变量:$变量名或${变量名}
-------查看变量:echo $变量名 或 ${变量名}
-------取消变量:unset变量名
在自定义变量里开启子shell后,变量不会再生效
(2)环境变量(在当前终端或在子shell中生效)
-------只能在当前终端和在当前终端所连接的shell中生效,但在同一个子shell中不生效
-------终端重连shell后,不会显示上次的变量
-------永久显示变量:在vim/etc/bashrc中添加内容
环境变量在zishell中也可以生效
(3)位置变量
可以不用变量名来进行赋值
(4)预定义变量
-----$0 脚本名 echo "显示脚本文件名"
-----$* 所有的参数
-----$@ 所有的参数
-----$# 参数的个数
-----$$ 当前进程的PID
-----$! 上一个后台命令进程的PID
-----$? 上一个命令的返回值 0表示成功
(注:127找不到命令 2没有文件或目录 )
(5)只读变量(只能查看不能更改,不可以取消只读变量)
declare命令
-
+/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
-
-f 仅显示函数。
-
r 将变量设置为只读。
-
x 指定的变量会成为环境变量,可供shell以外的程序来使用。
-
i [设置值]可以是数值,字符串或运算式。
-----------通过declare也可将变量设置为只读变量-------------------
三、练习内容
1、计算长方形面积
2、定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现)
${变量名:start:length} 从 string 字符串的左边第 start 个字符开始,
向右截取 length 个字符。start从0开始
${变量名:start} 从 string 字符串的左边第 start 个字符开始截取,直到最后。
${变量名:0-start:length} 从 string 字符串的右边第 start 个字符开始,
向右截取 length 个字符。start从1开始, 代表右侧第一个字符
${变量名:0-start} 从 string 字符串的右边第 start 个字符开始截取,直到最后。
${变量名#*chars} 从 string 字符串左边第一次出现 *chars 的位置开始,
截取 *chars 右边的所有字符。
${变量名##*chars} 从 string 字符串左边最后一次出现 *chars 的位置开始,
截取 *chars 右边的所有字符。
${变量名%chars*} 从 string 字符串右边第一次出现 chars* 的位置开始,
截取 chars* 左边的所有字符。
${变量名%%chars*} 从 string 字符串右边最后一次出现 chars* 的位置开始,
截取 chars* 左边的所有字符
1)截取网站访问的协议
2)截取网站访问账号信息
一个%或#表示最短匹配,在较短的字符串里面可适用
两个%%或##表示最长匹配,在较长的字符串里面可适用