shell变量

目录

概念    

变量基础

命名要求

read 

变量作用范围

整数运算

特殊变量

1、环境变量

2、位置变量

3、预定义变量


概念    

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。

     保存将来会变化的数据,即使数据变化,直接调用变量即可,各种 Shell 环境中都使用到了“变量”的概念。Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,Shell 程序能够提供更加灵活的功能,适应性更强。

变量基础

常见shell变量的类型包括:

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

环境变量:由系统维护,用户设置工作环境

只读变量:只可以读取不可以更改  

位置变量:通过命令行给脚本传递参数

预定义变量:bash中内置的一类变量,不能修改   规定好的变量放在那里让你使用

系统内置变量:PATH,UID,HOSTNAME,USER

命名要求

区别大小写

不能使程序中的保留字和内置变量:如:if,for,hostname 命令a=

只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线“_”,和主机名相反

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

大驼峰StudentFirstName

小驼峰studentFirstName

下划线student_name

1、赋值时使用双引号("")可以直接调用变量

2、赋值时使用单引号('')$只会被认为是字符$不会调用变量

3、赋值时使用(``反撇在tab上面)命令替换,提取命令执行后的输出结果和$( ) 用法相同

4、{}可以分隔变量值

read 

可以使用bash的内置命令read来给变量赋值。read命令用来提示用户输入信息,从而实现简单的交互过程。执行时将从标准输入设备(键盘)读入一行内容,并以空格为分隔符,江都入的各字段挨个赋值给指定的变量(多余的内容赋值给最后一个变量)。若指定的变量只有一个,则将整行内容赋值给此变量。

  • -p  提示信息
  • -t   输入等待时间(单位默认为秒)

变量作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用。

例如:直接执行bash进入一个新的子shell脚本后,将无法引用父级shell环境中定义的Product、Version等变量。 

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所子shell环境中可以继续使用。

方法:

1、格式1:export 变量名

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

可以使用pstree查看shell环境

输入bash进入子shell

ctrl+D组合exit退出子shell

整数运算

expr只能进行整数的运算

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

运算符:

运算符意义
++--增加及减少,可前置也可以放到结尾
\*   /   %乘法、除法、取余
+  -加法、减法
<   <=   >    >=比较符号
==      !=等于与不等于
&位的与
^位的异或
|位的或
&&逻辑的与
||逻辑的或
?:条件表达式
=   +=   -=   *=   /=   %=   &=    ^=     <<=    >>=    |=赋值运算符a+=1 相当于a=a+1

需要注意的是乘法运算,注意不能仅使用“*”符号,否则将被当成文件通配符。

[root@mjy ~]# X=35
[root@mjy ~]# Y=16
[root@mjy ~]# expr $X+$Y
35+16
[root@mjy ~]# expr $X + $Y
51
[root@mjy ~]# expr $X - $Y
19
[root@mjy ~]# expr $X \* $Y
560
[root@mjy ~]# expr $X / $Y
2
[root@mjy ~]# expr $X % $Y
3
#加减乘除前后有空格

使用expr进行运算时,变量必须是整数,不能是字符串,也不能含小数,否则会出错(命令的退出状态为非0)

[root@mjy ~]# i=hi
[root@mjy ~]# expr $i + 58expr 
expr: 非整数参数
[root@mjy ~]# echo $?
2
[root@mjy ~]# 

1、let  var=算术表达式

      let sum=1+2

      sum=1+2

2、$((var=算术表达式))和上面等价

      ((sum=1+2))

      echo $sum

3、var=$[算术表达式]

4、var=$((算术表达式))

5、var=$(expr  arg1  arg2  arg3 ...)

6、var=`expr arg1 arg2 arg3 ...)

7、echo '算术表达式' | bc

let 

支持加加减减  使用较多

[root@mjy ~]# i=1
[root@mjy ~]# let i++
[root@mjy ~]# echo $i
2
[root@mjy ~]# i=1;let i++;echo $i 
2
[root@mjy ~]# i=1;let ++i;echo $i 
2
[root@mjy ~]# i=6;let j=i++;echo $i $j
7 6
[root@mjy ~]# i=6;let j=++i;echo $i $j
7 7
#i++  先赋值给j后再加      ++i是加后再赋值

特殊变量

1、环境变量

是指处于运行需要而由linux系统提前创建的一类变量,主要用于设置用户的工作环境,环境变量值由Linux系统自动维护,会随着用户状态的改变而改变。

使用env命令可以查看到当前工作环境下的环境变量。

[root@mjy ~]# env        选取部分内容
USER=root
#表示用户名称
HOME=/root
#表示用户的宿主目录
HOSTNAME=mjy
#表示主机名
LANG=zh_CN.UTF-8
#表示语言和字符集
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
#表示可执行用户程序的默认路径
PWD=/root
#表示当前所在工作目录
SHELL=/bin/bash
#表示shell 路径

PATH变量用于设置可执行程序的默认搜索路径,当仅指定文件名称来执行命令程序时,Linux系统将在PATH变量指定的目录范围查找对应的可执行,如果找不到则会提示“command not found”。例如,first.sh脚本

 环境变量的全局配置文件

       在Linux系统中,环境变量的全局配置文件为/etc/profile,在此文件中定义的变量作用于所有用户。除此之外,每个用户还有自己的独立配置文件(~ /.bash_profile)。若要长期变更或设置某个环境变量,应在上述文件中进行设置。

2、位置变量

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

       使用$1、$2、$3、...、$9表示。$0表示命令或脚本本身的名称,虽然$0与位置变量格式相同,但$0属于预定义变量而不是位置变量。

3、预定义变量

由bash程序预先定义好的一类特殊变量,用户只能使用预定义变量,不能创建新的预定义变量,也不能为预定义变量赋值

  • $#:表示命令行中位置参数的个数
  • $*:表示所有位置参数的内容
  • $?:表示前一条命令执行后的返回状态,返回值 0 表示执行正确, 返回任何非 0值均表示执行出现异常
  • $0:表示当前执行的脚本或程序的名称 当前脚本的名字
  • $@:表示所有位置参数的内容分割成n份,每份作为一个独立的个体返回 返回所有
  • $$:当前bash的进程id
  • $!: 后台任务最后一个id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值