Linux Bash shell学习笔记6(操作符和相关主题)

1.算术操作符:

=                变量赋值。

                  在if/[]/()中,判断是否相等

+                加法

-                 减法

*                乘法

/                 除法

**              幂运算

%               取模

+=              加等于

-=               减等于

*=              乘等于

/=               除等于

%=             取模赋值

 

例如:

let   "z=5"

let   "$z+=5"  #错误,应该为 let "z+=5"

let    "z=$z"

 

n=1;echo -n "$n"

let "n=$n+1"   #let "n=n+1"也可

echo -n "$n"

 

:$((n=$n+1))     #:是必需的,如果没有:的话,Bash将尝试把“$((n=$n+1))”解释成一个命令

echo  -n "$n"

 

((n=n+2))

echo -n "$n"

 

n=$(($n+1))

echo -n "$n"

 

:$[n=$n+1]      #:是必需的,如果没有:的话,Bash将尝试"$[n=$n+1]"解释成一个命令,n为字符串时,这句话也能执行

echo -n "$n"

 

n=$[$n+1]       #n为字符串时,也能执行,尽量避免使用这种方法

echo -n "$n"

 

let "n++"         #let "++n"也可以

echo -n "$n"

 

:$((n++))         #:$((++n))也可以

echo -n "$n"

 

:$[n++]           #:$[++n]

echo -n "$n"

 

exit 0

 

注意:在bash中,不支持浮点数

 

 

2.位操作符:

<<                   左移1位

<<=n               左移n位

例如 let "var <<=2"  #左移2位,相当于*4

>>                   右移1位

>>=n               右移n位

&                      按位与

&=                    按位与等于

|                       按位或

|=                     按位或等于

~                      按位非

^                      按位异或

^=                    按位异或等于

 

 

3.逻辑操作符:

&&                    逻辑与

例如

if [ $condition1 ] && [ $condition2 ]

#与if [ $condition1 -a $condition2 ]相同,如果condition1和condition2都为true则返回true

 

if [[ $condition1 && $condition2 ]]

#也可以

#但&&不能用在[ ]里面

 

||                       逻辑或

例如

if [ $condition1 ] || [ $condition2 ]

#与if [ $condition1 -o $condition2 ]相同,如果condition1和condition2中,有一个为true则返回true

 

if [[ $condition1 || $condition2 ]]

#也可以

#||不能用在[ ]中

 

例如:

#!/bin/bash

 

a=24

b=47

 

if [ "$a" -eq 24 ] && [ "$b" -eq 47 ]

then

    echo "Test #1 succeds"

else

    echo "Test #1 fails"

fi

 

#错误的方法:  if [ "$a" -eq 24 && "$b" -eq 47 ]

#bash尝试执行[ "$a" -eq 24,没有找到"]",所以失败

#如果使用 [[ "$a" -eq 24 && "$b" -eq 47 ]]就可以工作

 

if [ "$a" -eq 98 ] || [ "$b" -eq 47 ]

then

    echo "Test #2 succeds"

else

    echo "Test #2 fails"

fi

 

#使用 -a和-o选项

if [ "$a" -eq 24 -a "$b" -eq 47 ]

then

    echo "Test #3 succeds"

else

    echo "Test #3 fails"

fi

 

if [ "$a" -eq 98 -o "$b" -eq 47 ]

then

    echo "Test #4 succeds"

else

    echo "Test #4 fails"

fi

 

&&和||,也能在算术运算中使用:

echo $((1&&2))  $((3&&0))   $((4||0))   $((0||0))

输出          1                0               1               0

 

 

4.混杂操作:

,                   逗号操作,可以连接2个或多个算术运算,所有的操作都会被执行,但只有最后一个操作作为表达式的结果

 

let   "t1=((5+3,7-1,15-4))"

echo "t1=$t1"   #t1=11

 

let  "t2=((a=9,15/3))"

echo "t2=$t2    a=$a"

#t2=5     a=9

 

 

5.数字常量的处理:

#10进制,默认

let    "dec=32"

echo "$dec"  #32

 

#8进制,以0(零)开头

let    "oct=032"

echo "$oct"   #26

 

#16进制:以‘0x’或‘0X’开头

let   "hex=0x32"

echo   "$hex"   #50

 

#其它进制:2到64进制

#  BASE#NUMBER  BASH为进制,NUMBER数字,BASH的范围是2到64,NUMBER必须在BASE范围之内

let "bin=2#1111 0011 0011 01"

echo "$bin"

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值