首页 > 系统相关 >shell编程第二天(变量)

shell编程第二天(变量)

时间:2023-05-18 12:04:39浏览次数:41  
标签:aa shell name read 编程 ping echo 变量


shell第二天变量

变量是用一个固定的字符串去表示一个不固定的内容,以便于修改。

自定义变量

定义变量

用户自定义变量是最常用的变量类型,其特点是变量名和变量值都是由用户去定义的。应该怎么定义变量呢?很简单,只需要执行Variablename=Variablevalue即可
比如:

  • 定义变量name
name=666
  • 输出变量name的值
echo $name

变量的定义和执行很简单,但是也要遵守一定的规则:

自定义变量是不可以以数字开头

2name="777"

shell编程第二天(变量)_bash

自定义变量左右两侧不可以有空格

name = 777

shell编程第二天(变量)_变量名_02

变量的值如果有空格,必须用引号来进行包含

name="张三 666"

shell编程第二天(变量)_变量名_03


重复定义变量会进行变量叠加覆盖:

变量在叠加覆盖的时候一定要注意,在进行变量叠加的时候,变量名要""或者是${}进行包含,比如:

反复使用同一个变量的名字

name=zhangsan
echo $name
name=lisi
echo $name

shell编程第二天(变量)_bash_04

aa=123
echo $aa
aa="$aa"456# 这里aa输出的时候先会调用前面aa的值,这里的引号起的
echo $aa

shell编程第二天(变量)_shell_05


还可以使用${}

aa=123
aa=${aa}789
echo $aa

shell编程第二天(变量)_shell_06


变量是可以反复赋值的,最后的结果是最后一个变量的值。

查看变量

可以铜鼓echo命令查询已经设定的变量的值,这种查询是已知变量名查询变量值,但是如果不知道变量名,那么可以查看系统中已经存在的变量吗?
它会将所有的系统中的变量给显示出来

set

可以配合管道命令进行使用

set | grep name

shell编程第二天(变量)_变量名_07

删除变量

想要删除自定义变量,可以使用unset命令,命令格式如下:

unset 变量名称
unset aa
echo $aa

shell编程第二天(变量)_自定义_08


还有一种特殊的情况:

bb=
echo $bb
set | grep bb

shell编程第二天(变量)_变量名_09


经过查看系统中的变量可以得知,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

shell编程第二天(变量)_bash_10


使用这个测试主机在线的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

保存退出,执行文件

shell编程第二天(变量)_shell_11


同样将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命令查看保留关键字)


标签:aa,shell,name,read,编程,ping,echo,变量
From: https://blog.51cto.com/u_15016660/6296646

相关文章

  • shell编程第四天(判断)
    文章目录shell编程第四天(判断)shell条件测试数值比较文件测试字符串比较and和or流程控制shell编程第四天(判断)无论是什么编程语言都离不开条件判断,shell编程也是一样的,也就是流程控制。shell条件测试数值比较格式:[数值1操作符数值2],也就是大于,小于,大于等于,小于等于数学中通......
  • JavaScript中变量类型间的转化
    转到数值字符串布尔nullundefined数值Number()parsenInt()-0,/1,*1Number(true)→1Number(false)→0Number(null)→0Number(undefind)→NaN字符串String()toString()+""String(true)→trueString(false)→falseError:null.toString()Error:undefined.......
  • Java--类/接口作为成员变量
    Java--类/接口作为成员变量成员变量也可以使用自定义的类如何使用String就如何使用自定义的类代码示例Weapon类publicclassWeapon{privateStringcode;publicWeapon(Stringcode){this.code=code;}publicWeapon(){}pu......
  • Java 会是首选的最佳编程语言吗?
    Java是一种非常流行的编程语言,具有广泛的应用领域和强大的生态系统。它被广泛用于企业级应用程序开发、移动应用程序开发、Web应用程序开发、游戏开发等领域。Java的优点包括跨平台性、面向对象、可靠性高、安全性好、易于学习和使用等。因此,在很多情况下,Java是首选的最佳编程......
  • java opencv配置环境变量
    javaopencv配置环境变量Windows开发环境:1、下载路径:opencv官网下载文件,解压,我这里用的版本是3.4.16。2、解压后opencv\build\java\x64目录下的opencv_java3416.dll文件拷到C盘的system32下,opencv\build\java下面的opencv-3416.jar文件复制到本地D盘,新建lib文件夹里面,可以直接通......
  • 编程打卡:C语言程序设计
    classmiband(Peripheral):_send_rnd_cmd=struct.pack('<2s',b'\x02\x00')_send_enc_key=struct.pack('<2s',b'\x03\x00')def__init__(self,mac_address,key=None,timeout=0.5,debug=False):......
  • 9.ansible之定义变量
    Ansible支持十几种定义变量的方式,其中常用的有如下:Inventory变量HostFacts变量Register变量Playbook变量Playbook提示变量变量文件命令行变量1)Inventory(在主机清单配置文件中定义变量)[root@db04ansible]#cathosts[test]db01myvar1="hellotheworld"myvar2=......
  • 【hadoop】 4001-Partitioner编程
    MapReduce重要组件——Partitioner组件(1)Partitioner组件可以让Map对Key进行分区,从而可以根据不同的key来分发到不同的reduce中去处理;(2)你可以自定义key的一个分发股则,如数据文件包含不同的省份,而输出的要求是每个省份输出一个文件;(3)提供了一个默认的HashPartitioner......
  • 27、在 Java 中,为什么不允许从静态方法中访问非静态变量?
    静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。......
  • 第四周编程作业(一)-Building your Deep Neural Network: Step by Step
    BuildingyourDeepNeuralNetwork:StepbyStepWelcometoyourweek4assignment(part1of2)!Youhavepreviouslytraineda2-layerNeuralNetwork(withasinglehiddenlayer).Thisweek,youwillbuildadeepneuralnetwork,withasmanylayersasyou......