变量以及变量的基础操作

文章详细介绍了Shell脚本中变量的使用,包括unset取消变量、declare指定变量类型、变量的命名与分类(如自定义、环境、位置、预定义和只读变量)、变量运算(如单双引号区别、变量域和算数运算)、字符串操作和条件判断等。同时,还提供了实例展示变量的运算和截取字符串的方法。
摘要由CSDN通过智能技术生成

变量:可以变化的量是可以命名的内存空间
#通用
1:unset 变量名(取消变量)

​ -v取消变量

​ -f取消函数 默认为先判断是否为变量(先取消) 在判断是否为函数(后取消)

2:declare (指定变量类型)

​ -i 为整型 (shell默认为char 此项可用来运算)

​ -r 为只读变量 不加变量名和值也可以变成查看只读变量

​ + 为取消变量属性

​ -x 为环境变量

​ shift 剔除已经取到的值 (剩下的位置变量依次上推来读取)

​ set 查看所有变量

1.命名:

​ 变量名=123 变量名与值之间不能有空格 只能以下划线和字母开头命名

2.分类:
1.自定义变量 :

​ 当前终端生效

2.环境变量:

​ 所有的子shell生效

​ 使用 export 和 declare -x 定义环境变量

​ 使用env 和 export -p 查看环境变量

3.位置变量 :

​ 位置1就是$1

​ 位置2就是$2 ( 依次类推超过2位数需要加{} )

4.预定义变量:

​ $0 查看当前脚本名

​ $* 空格不分开一个参数显示所有的参数

​ $@ 按照空格分开显示所有参数

​ $$ 当前进程ID

​ $# 所有参数

​ $? 判断返回命令成功结果 (一般 1为不成功 0为成功)

​ $! 上一个后台的进程 (sleep 400 & 后台沉睡400 )

5.只读变量

​ readonly a=123 (以readonly 命名) 只能读 不能改和取消

​ declare -r a=123

6.永久变量的文件地址 以及 读取顺序 ( 6.1>6.2>6.3)

​ 6.1 3个文件所有用户都可以获取到变量

​ /etc/profile.d/*.sh

​ /etc/bashrc

​ /etc/profile #切换用户加 - 以登陆式切换用户不会加载

​ 6.2 root用户匹配到变量

​ /root/.bashrc

​ 6.3 只有当前用户可以匹配到变量

​ ~/.bash_profile

3.变量运算
1单双引号在shell的区别

​ 单引号:保持字面意思

​ 双引号:引用其含义

​ 反引号:解释为执行shell命令

2.变量域

​ local a=100 #以local定义的变量为局部变量

3.算数运算

​ # c=1 k=2

​ 1. (()) #引用变量可以在(())前加 $

​ 2. let #用于整数运算 引用变量加 $

​ # let sum= c + c+ c+k 和 sum=$((c+k)) 一样

​ 3. [] s3=$[c*w] #用于整数运算 , 主为变量运算 需要变量名接*

​ 4. declare -i s4= c ∗ c* cw #需要变量名接

​ 5. expr $c \* $k #整数运算 直接输出值 运算符前后需要空格 字符需要反斜杠转

​ 6. echo c ∗ c* ck |bc #相当于计算器 可以运算小数 但是算出结果若有小数则直接舍去小数 进入后直接计算

4.变量字符的的操作
1.字符串操作

​ name=zhangsan

​ echo ${#name} #字符的长度

​ echo ${name:1} #以第一个字符开始截取

​ echo ${name:1:3} #从第一个字符开始截取的长度

2.字符串/#%的作用

​ url=http://www.baidu.com/index.html

​ echo ${curl#*/} #从左向右切除最 短 的字符 以所有字符到 / 停止

​ echo ${curl##*/} #从左向右切除最 长 的字符 以所有字符到 / 停止

​ echo ${curl%/*} #从右向左切除最 短 的字符 以所有字符到 / 停止

​ echo ${curl%%/*} #从右向左切除最 长 的字符 以所有字符到 / 停止

​ echo ${curl/http/https} #将HTTP 协议换成 https 默认是第一次匹配到的

3.expr

​ expr index dafaf d #将dafaf第一次出现d标记 显示为1

​ expr substr helloword 1 3 #将 hel 截取出来 截取[1,3]

​ expr length hhh #长度 为3

​ expr index +index i #+号为取消其属性

​ expr 1 = 2 # 返回0则为假 1则为真

4.变量空值判断

​ echo ${a-123} #若没有变量则临时赋值 123

​ echo ${a=123} #若没有变量则永久赋值123

​ echo ${a:+123} #若有变量c则临时赋值123

​ echo ${a:? this is null} #若为空则报错 自己的语句

5.read 脚本交互

​ read 以换行符作为参数的分离

​ read 可以赋值多个值 第一个值赋给第个变量 第二个值赋给第二个变量 不需要在变量名加2 $

​ read -p “这里可以打印提示信息” a #a为变量名

​ read -n 4 a #当输入字符超过4个字符则自动退出交互模式

​ read -t 5 a #等待时间 当超过5秒自动退出交互模式 但是输出的变量就会为空

​ read -s a #关闭回显 输入的不显示 就像输入密码不显示密码

作业

1.总结变量的类型及含义?

2.实现课堂案例计算长方形面积?(6种方式)

3.定义变量url=https://blog.csdn.net/weixin_45029822/article/details/103568815(通过多种方法实现) 1)截取网站访问的协议 2)截取网站访问账号信息

#问题2
[root@B six]# 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@B six]# bash s.sh
	s1=6
    s2=6
    s3=6
    s4=6
    s5=6
    s6=6
    s7=6
#问题2                                
[root@B six]# vim url.sh
    #!/bin/bash
    #截取网站协议 截取网站访问账号信息
    url=https://blog.csdn.net/weixin_45029822/article/details/103568815
    echo ${url##*/}
    echo ${url%%:*}
    echo ${url:0:5}
[root@B six]# bash url.sh 
	103568815
	https
	https
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值