shell脚本-变量

一、shell脚本变量

1.变量的作用

shell变量用来存放系统和用户需要使用的特定参数,而且这些参数可以根据用户的设定或系统环境的变化而相应变化,通过使用变量,shell程序能够提供更加灵活的功能,适应性更强

1.变量名:使用固定的名称,由系统预设或用户定义

2.变量值:能够根据用户设置、系统环境的变化而变化

2.变量作用范围

新定义的变量默认只能在当前的shell环境中生效,被称为局部变量,当进入子程序或新的子shell环境时局部变量就无法继续使用了,如果想要在子程序或新的子shell环境使用变量可以通过内部命令export将指定的变量导出为全局变量,使用户定义的变量在所有的子shell环境中能够继续使用

export是内部命令

export格式:export  变量名=变量值

临时设置变量:

如果需要永久设置变量,需要在/etc/profile文件中添加:

3.删除变量

删除变量格式:unset  变量名

二、变量的类型

自定义变量:由用户自己定义、修改和使用

特殊变量:环境变量、只读变量、位置变量、预定义变量

环境变量系统维护,用于设置工作环境
只读变量只可以读取不可以更改
位置变量通过命令行给脚本传递参数
预定义变量Bash中内置的一类变量,不能修改,有些规定好的变量,放在那里让你使用

1.自定义变量

命名要求:

1.区分大小写

2.只能使用数字、字母及下划线且不能以数字开头

3.不要使用内置的变量,使用英文尽量使用词义通俗易懂

4.不能使程序中的保留字和内置变量,如:if、for、hostname等

5.大驼峰:StudentFirstName

6.小驼峰:studentFirstName

7.下划线:student_name

赋值时使用符号:

双引号:允许通过$符号引用其他变量值

单引号:禁止引用其他变量值,$视为普通字符

反撇号:命令替换,提取命令执行后的输出结果,``和$(...)作用相同

{}:分隔变量值

定义变量时中间有特殊字符,如空格,可以使用单引号或双引号

方法一:

方法二:

2.环境变量

env查看当前工作环境中的环境变量:

配置文件:/etc/profile(全局生效)、~/.bash_profile(当前用户环境)

可以使子进程(包括孙子进程)继承父进程的变量,但是无法让父进程使用子进程的变量

一旦子进程修改从父进程继承的变量,将会有新的值传递给孙子进程

一般只在系统配置文件中使用,在脚本中较少使用

常用环境变量:

1.$USER:表示用户名称

2.$HOME:表示用户的宿主目录

3.$LANG:表示语言和字符集

4.$PWD:表示当前所在工作目录

5.$PATH:表示可执行用户程序的默认路径

设置系统根据环境变量自动设置可执行程序:

3.只读变量

readonly命令用于定义只读shell变量和shell函数,readonly命令的选项-p可以输出显示系统中所有定义的只读变量

命令格式:readonly  选项  参数

1.变量值不允许修改(重新赋值)的情况

2.无法使用unset删除

3.最快方法重启

4.位置变量

当执行命令行操作时,第一个字段表示命令名或脚本程序名,其余的字符串参数按照从左到右的顺序依次赋值给位置变量

$n:n为任意数字,$0代表命令本身,$1-$9代表一个到第九个参数,十以上的参数需要使用大括号表示,比如第十个参数为${10}

输出对应位置内容(第2.5.10个位置内容)

使用位置变量进行加法运算

5.预定义变量

系统直接定义好的变量,直接使用即可

$*表示所有位置参数的内容看成一个整体返回
$@

表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回

$?表示前一条命令执行后的返回状态,返回值为0表示执行正确,返回任何非0值均表示执行出现异常
$#表示命令行中位置参数的总个数
$0表示当前执行的脚本或程序的名称,即当前脚本的名字
$$当前进程ID
$!后台任务最后一个ID

三、整数变量的运算

shell默认只支持整数的运算

命令格式:expr  变量1  运算符  变量2  [运算符  变量3]

运算符:+(加法)、-(减法)、\*(乘法)、/(除法)、%(取余)

常见的运算表达式:(result代表自定义变量,可用任意代替)

result=$(expr  变量1  运算符  变量2)

result=$((变量1  运算符  变量2))

result=$[变量1  运算符  变量2]

let result=变量1  运算符  变量2

i++相当于i=$[$i+1]           (i++是先赋值再运算)

i--相当于i=$[$i-1]

i+=1相当于i=$[$i+1]

例子:(a=10,b=20)

格式:result=$(expr  变量1  运算符  变量2)

数字运算:i=$(expr 10 \* 20)

变量运算:i=$(expr $a \* $b)

格式:result=$((变量1  运算符  变量2))

数字运算:e=$((10*20))

变量运算:e=$(($a*$b))

格式:result=$[变量1  运算符  变量2]

数字运算:j=$[10*20]

变量运算:j=$[$a*$b]

格式:let  result=变量1  运算符  变量2

数字运算:let m=10*20

变量运算:let m=$a*$b

  • 25
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值