博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell中变量的使用
阅读量:3742 次
发布时间:2019-05-22

本文共 1519 字,大约阅读时间需要 5 分钟。

shell中变量的使用

有关环境变量,详见

1.变量的定义

  • 一个shell程序将继承其父shell的所有全局环境变量(即export的变量),并且可以对其重写而不影响父shell
  • shell中的变量是无类型的。shell不支持浮点型只支持整型和字符串型,判断标准:变量中只包含数字的话是整型,包含了其他是字符就是字符串型
  • 在shell脚本中可以随时定义变量,尤其要注意bash的语法中“=”两边不能有空格,变量值中间也不能有空格,有的话要用单引号围起来
test=123    #局部环境变量一般用小写export TEST=123 #全局环境变量一般用大写export MYNAME='XIAO BA WU' #变量值有空格,要用单引号围起来export test #也可以这样把前面的局部变量导出到全局local functest #函数体内变量定义使用local关键字,可以将作用域限制在函数体内
  • 此外,和c语言一样,变量必须先定义再使用。若使用了一个未定义的变量,倒是不会报错,相当于调用了一个值为空的变量

2.变量操作

  • shell中,不能直接由变量名获取变量值,根本原因是shell中的字符串可以不加引号,所以系统无法判断它是字符串还是变量名,故通过$来引用变量名获取其值。而当变量名作为右值时,系统可以直接判定其为变量,无需添加$
value1=value2   //value1的值为字符串"value2"value1=$value2 //value1的值为value2的值
  • 此外$对变量名的判断是空格敏感的,当发生如下情况时,为了让bash能正确识别变量名,必须要使用{}将变量名包围,这是一个好习惯
name=123name1=456echo hah! hah! $name1 #打印name1的值echo hah! hah! $name11 #打印name11的值(空值)echo hah! hah! ${name}11 #打印name的值
  • 当我们需要在一个字符串变量尾部,再续上几个字符时,可以:
name='aa bb cc d'name=$name'd ee'name+='d ee' #这种形式的接续操作很常见
  • $在shell中是关键字,如果要在字符串中单纯显示$符号,必须加\

  • shell中,我们可以使用反引号` (就是键盘上~所处的键),来将命令的返回值赋给变量,如:

PATH=`pwd`
  • shell中,我们还可定义数组变量
platforms=( "android""linux")

3.参数变量

  • 还有一种非常重要的变量,参数变量。$0是第0个参数,恒定为本脚本/程序的名字; $1是第一个参数 ,$2是第二个参数 ,以此类推。。。$#代表了输入参数的个数(不包括恒定的参数$0
  • $*是所有参数的总集,作为单个的参数。而 $@也是所有参数的总集,但将它们作为数组,假设现在传入参数1 2 3 4$*相当于"1 2 3 4"$@相当于("1" "2" "3" "4")
  • shift命令用来左移参数,即$3移到$2$2移到 $1$1被删除,$0永远不被。在不知道参数个数时,shift命令常用来遍历参数,我们可以只操作第一个参数,操作完后执行shift,然后继续操作第一个参数

4.返回值变量

  • 在shell中的每个命令,在执行结束时都会返回给shell一个返回值,其值为0-255之间的整数值,一般0表示成功执行,正数表示发生了错误
  • 我们可以使用$?来获取上条执行命令的返回值
  • 脚本可以由我们主动退出,在错误处理中经常使用,具体方法为exit var,var可以是我们指定的脚本退出时的返回值

转载地址:http://qpvin.baihongyu.com/

你可能感兴趣的文章
Flink On Yarn 集成时常见报错
查看>>
k8s-nfs
查看>>
filebeat___log -input
查看>>
GitHub使用
查看>>
关于学习Java的一点点心得。附Dos命令的基操
查看>>
SpringCloud详细教程3-Eureka服务注册中心
查看>>
SpringMVC中常用的几个注解@RequestBody
查看>>
SpringCloud详细教程5-Eureka更多介绍
查看>>
SpringCloud详细教程6-Zookeeper
查看>>
Freemarker使用mht制作导出word模板
查看>>
Freemarker使用xml写word模板-遇到的坑
查看>>
PyQt5基础用法ui转py后需要修改的地方
查看>>
Scanner类
查看>>
基本类型包装类
查看>>
System类常用方法
查看>>
Runtime类、Math类和Random类的常用方法
查看>>
数据处理类常用方法
查看>>
Collections和Character类 常用静态方法
查看>>
HTML之Javascript——BOM浏览器对象模型
查看>>
MySQL数据库——数据库概述及SQL相关基本操作
查看>>