shell第二天变量
变量是用一个固定的字符串去表示一个不固定的内容,以便于修改。
自定义变量
定义变量
用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户去定义的。应该怎么定义变量呢?很简单,只需要执行Variablename=Variablevalue
即可
比如:
- 定义变量name
name=666
- 输出变量name的值
echo $name
变量的定义和执行很简单,但是也要遵守一定的规则:
自定义变量是不可以以数字开头
2name="777"
自定义变量左右两侧不可以有空格
name = 777
变量的值如果有空格,必须用引号来进行包含
name="张三 666"
重复定义变量会进行变量叠加覆盖:
变量在叠加覆盖的时候一定要注意,在进行变量叠加的时候,变量名要""
或者是${}
进行包含,比如:
反复使用同一个变量的名字
name=zhangsan
echo $name
name=lisi
echo $name
aa=123
echo $aa
aa="$aa"456# 这里aa输出的时候先会调用前面aa的值,这里的引号起的
echo $aa
还可以使用${}
aa=123
aa=${aa}789
echo $aa
变量是可以反复赋值的,最后的结果是最后一个变量的值。
查看变量
可以铜鼓echo命令查询已经设定的变量的值,这种查询是已知变量名查询变量值,但是如果不知道变量名,那么可以查看系统中已经存在的变量吗?
它会将所有的系统中的变量给显示出来
set
可以配合管道命令进行使用
set | grep name
删除变量
想要删除自定义变量,可以使用unset命令,命令格式如下:
unset 变量名称
unset aa
echo $aa
还有一种特殊的情况:
bb=
echo $bb
set | grep bb
经过查看系统中的变量可以得知,bb这个变量是存在的,只不过bb的变量的值是没有的。
示例
编写测试主机在线的脚本,当主机在线提示在线,当主机不在线提示不在线。
vi ./ping.sh
ping -c 1 192.168.83.172 &> /dev/null && echo 192.168.83.172up || echo 192.168.83.172down
# ip指的是要测试的主机的IP
# &&和||是三目表达式
# &&前面的命令成功,执行后面的命令
# ||前面的命名失败,执行后面的命令
执行程序
bash ping.sh
或者是chmod +x ping.sh
使用. ping.sh
使用这个测试主机在线的IP更改十分麻烦,可以尝试使用变量进行替代
vi ping.sh
#!/bin/bash
ip=192.168.83.172
ping -c1 $ip &> /dev/null && echo "$ip"up || echo ${ip} down
保存退出,执行文件进行尝试。
交互定义变量
交互定义变量:read 变量名称
,read从键盘中读入变量的值
read -p "请输入您的姓名:" name
# read -p表示打印 打印的内容 变量
echo "宇宙最帅的人就是:" $name
保存退出,执行文件
同样将read命令应用在ping.sh中,
#!/bin/bash
# ip1=192.168.83.172
read -p "请输入您需要测试的第一个IP地址:" iP1
ping -c 1 $ip1 &> /dev/null && echo "$ip1"up || echo ${ip1}down
保存退出,执行文件
- 总结
变量的命名有以下的规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
中间不可以有空格,可以使用下划线
不能使用标点符号
不能使用bash里的关键字(可以用help命令查看保留关键字)