一、赋值
1.变量赋值
=
通用赋值操作符,可用于算术和字符串赋值。
var=27
category=minerals # 在"="之后是不允许出现空白字符的.
不要混淆 =
赋值操作符与 =
测试操作符。也正是因为这一点,在 bash 里面测试操作符也常写作==
,但这可能在其它 shell 中是不允许的
# = 在这里是测试操作符
if [ "$string1" = "$string2" ]
# if [ "X$string1" = "X$string2" ] 是一种更安全的做法,
# 这样可以防止两个变量中的一个为空所产生的错误.
# (字符"X"作为前缀在等式两边是可以相互抵消的.)
then
command
fi
二、算术操作符
1.简单算术操作符
操作符 说明
+ 加法计算
- 减法计算
* 乘法计算
/ 除法计算
** 幂运算
% 模运算,或者是求余运算(返回一次除法运算的余数)
2.其他算术操作符
+=
“加-等于”(把变量的值增加一个常量然后再把结果赋给变量)
let "var += 5" # var变量的值会在原来的基础上加5
-=
“减-等于”(把变量的值减去一个常量然后再把结果赋给变量) *=
“乘-等于”(先把变量的值乘以一个常量的值,然后再把结果赋给变量)
let "var *= 4" # var变量的结果将会在原来的基础上乘以4
/=
“除-等于”(先把变量的值除以一个常量的值,然后再把结果赋给变量) %=
“取模-等于”(先对变量进行模运算,即除以一个常量取模,然后把结果赋给变量)
3.使用算术操作符
$ vim test.sh
输入代码:
#!/bin/bash
# 使用10种不同的方法计数到11.输出结果均为12
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 + 1 ))
# 上边这句是一种更简单方法.
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 "
# 现在来一个C风格的增量操作.
let "n++" # let "++n" 也可以.
echo -n "$n "
(( n++ )) # (( ++n ) 也可以.
echo -n "$n "
: $(( n++ )) # : $(( ++n )) 也可以.
echo -n "$n "
: $[ n++ ] # : $[[ ++n ]] 也可以.
echo -n "$n "
echo
exit 0
程序截图:
运行代码:
$ bash test.sh
三、位操作符
1.简介
<<
左移一位(每次左移都相当于乘以2)
<<=
“左移-赋值”
let "var <<= 2"
#这句的结果就是变量var左移2位(就是乘以4)
\>>
右移一位(每次右移都将除以2)
\>>=
“右移-赋值”(与<<=正好相反)
&
按位与
&=
“按位与-赋值”
|
按位或
|=
“按位或-赋值”
~
按位反
!
按位非
^
按位异或 XOR
^=
“按位异或-赋值”
四、逻辑操作符
1.简介
- && 与(逻辑)
- || 或(逻辑)
2.使用 && 和 || 进行混合条件测试
$ vim test.sh
输入代码:
#!/bin/bash
a=24
b=47
if [ "$a" -eq 24 ] && [ "$b" -eq 47 ]
then
echo "Test #1 succeeds."
else
echo "Test #1 fails."
fi
if [ "$a" -eq 98 ] || [ "$b" -eq 47 ]
then
echo "Test #2 succeeds."
else
echo "Test #2 fails."
fi
# -a和-o选项提供了一种可选的混合条件测试的方法. -a 等于 && , -o 等于 ||
if [ "$a" -eq 24 -a "$b" -eq 47 ]
then
echo "Test #3 succeeds."
else
echo "Test #3 fails."
fi
if [ "$a" -eq 98 -o "$b" -eq 47 ]
then
echo "Test #4 succeeds."
else
echo "Test #4 fails."
fi
a=rhino
b=crocodile
if [ "$a" = rhino ] && [ "$b" = crocodile ]
then
echo "Test #5 succeeds."
else
echo "Test #5 fails."
fi
exit 0
程序截图:
运行代码:
$ bash test.sh
五、混杂的操作符
1.简介
,
逗号操作符
逗号操作符可以连接两个或多个算术运算。所有的操作都会被运行(可能会有负作用),但是只会返回最后操作的结果。
let "t1 = ((5 + 3, 7 - 1, 15 - 4))"
echo "t1 = $t1" # t1 = 11
let "t2 = ((a = 9, 15 / 3))" # 设置"a"并且计算"t2".
echo "t2 = $t2 a = $a" # t2 = 5 a = 9
程序截图:
运行: