暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Shell变量及运算符

幸福的码头 2022-09-27
107

一.Shell变量

A.变量的设置规则:

1. 变量名称只能是字母、数字和下划线组成,但是开头字符不能是数字,环境变量名称一般用大写字母,便于区分;

2.在bash中,变量的默认类型都是字符串型,如果要进行数值运算,则要通过其他命令实现;

3. 变量与变量内容以一个等号『=』来连结,等号两边不能直接接空格符;

4. 变量内容若有空格符可使用双引号『"』或单引号『'』将变量内容结合起来;

5.可用转义字符『 \ 』将特殊符号(如 [Enter], $, \, 空格符, '等)变成一般字符,如: 『myname=VBird\ Tsai』

6、在定义变量时,如果需要由其他的指令所提供的信息时,可以使用反引号`指令`或 $(指令)。例如想要取得核心版本的设定:      『version=$(uname -r)』再『echo $version』可得『3.10.0-229.el7.x86_64』

7、若该变量为扩增变量内容时,则可用 "$变量名称" 或 ${变量} 累加内容,如下所示: 『PATH="$PATH":/home/bin』或『PATH=${PATH}:/home/bin』

8、用户自定义变量只能在当前shell中生效,而环境变量会在当前shell以及其所有子shell中生效。若想该变量需要在其他子程序执行,则需要以 export 来使变量变成环境变量: 『export 变量名=变量值』

9、取消变量的方法为使用 unset :『unset 变量名称』例如取消 myname 的设定:     『unset myname』

例:

  • var=”Hello world”

echo $var

  • A=`ls -la` 或$(ls -la)#将一个命令的执行结果赋值给变量

   echo $A

  • x=456

   x=${x}789

   echo $x  

#输出456789

B.read命令接收用户的输入

语法:read [选项] 变量 

-p 提示语句

-n  字符个数

-t  等待时间,单位为秒

-s  隐藏输入

作用:接收用户的输入保存到指定的变量

例:

$ read -t 30 -p “Please input your name:” name


二.Shell运算符

1.expr算术运算

原生bash不支持简单的数学运算,但可以通过其他命令实现,如expr,是一款表达式计算工具,使用它能完成表达式的求值操作。

注意变量和运算符之间要有空格,例如“2+2”不对,要写成“2 + 2”,且只能处理整数的运算。

+加法:`expr 2 + 3`

-减法:`expr 5 - 3`

*乘法:`expr 5 * 3` ,乘号*前要加转义字符\

/除法:`expr 5 3` ,结果取整

%取余:`expr 5 % 3`

== 相等。用于比较两个数字,相同则返回真(1),否则返回假(0)

!= 不相等。用于比较两个数字,不同则返回真(1),否则返回假(0)


2.$[]和$(())算术运算

两者都可以用于数学运算,支持+、-、*、/、%,还支持比较运算和逻辑运算>、<、==、!=、++、--、!(求反)、~(按位求反)、**(幂运算)、<<、>>、&、|、&&、|| ,且不用转义。

例:

a=5;b=6;c=7

echo $((a+b+c))

echo $((a++))

echo $((a==b))

echo $((b>>1))

echo $((b**2))

echo $(((a>b)&&(a>c)))

注意:$()的作用是命令替换与反引号作用一样。


3.关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

-eq 比较两个数是否相等,相等返回true,如:[ $a -eq $b ]

-ne 比较两个数是否不相等,不相等返回true,如:[ $a -ne $b ]

-gt 比较左边数是否大于右边数,若是返回true,如:[ $a -gt $b ]

-lt 比较左边数是否小于右边数,若是返回true,如:[ $a -lt $b ]

-ge 比较左边数是否大于等于右边数,若是返回true,如:[ $a -ge $b ]

-le 比较左边数是否小于等于右边数,若是返回true,如:[ $a -le $b ]


4.布尔运算符

!非运算,表达式为true,则返回false,否则返回true,如:[ !false ]返回true

-o 或运算,有一个表达式为真,则结果为真,如:[ $a -lt 20 -o $b -gt 100]

-a 与运算,有一个表达式为假,则结果为假,如:[ $a -lt 20 -a $b -gt 100]


5.字符串运算符

= 检测两个字符串是否相等,相等则返回true。如[ $a = $b ]

!=检测两个字符串是否不相等,不相等则返回true。如[ $a != $b ]

-z检测字符串长度是否为0,为0则返回true。如[ -z $a ]

-n检测字符串长度是否不为0,不为0则返回true。如[ -n $a ]

str检测字符是否为空,不为空则返回true。如[ $a ]


6.文件测试运算符

-b file 检测文件是否是块设备文件,如果是,则返回true,如:[ -b $file ]

-c file 检测文件是否是字符设备文件,如果是,则返回true,如:[ -c $file ]

-d file 检测文件是否是目录,如果是,则返回true,如:[ -d $file ]

-f file 检测文件是否是普通文件,如果是,则返回true,如:[ -f $file ]

-r file 检测文件是否可读,如果是,则返回true,如:[ -r $file ]

-w file 检测文件是否可写,如果是,则返回true,如:[ -w $file ]

-x file 检测文件是否可执行,如果是,则返回true,如:[ -x $file ]

-s file 检测文件是否为空(文件大小是否大于0),不为空则返回true,如:[ -s $file ]

-e file 检测文件(包括目录)是否存在,如果是,则返回true,如:[ -e $file ]


文章转载自幸福的码头,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论