#!/bin/bash
#shell 运算符
#算术运算符
echo "==========算术运算符======================"
#原生bash不支持简单的数学运算符,但是可以通过其它命令来实现,例如,awk和expr
#expr是一款表达式计算工具,使用它能完成表达式的求值操作
val=`expr 1 + 2 `;
echo "${val}";
echo "==========完整的算术运算符==============="
#注意:
#1、表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2
#2、完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号
a=9;
b=3;
echo "a=${a},b=${b}"
#相加
echo "a + b :`expr $a + $b` "
#相减
val=`expr $a - $b`;
echo "a - b :"${val};
#乘法
val=`expr $a \* $b`;
echo "a * b :${val}";
#除法
val=`expr $a / $b`;
echo "a / b :${val}";
#取余
val=`expr $a % $b`;
echo "a % b :${val}";
#赋值
c=${b};
echo "b赋值给c,${c}";
# 等于 ,不等于
if [ $a == $b ]; then
echo "a == b";
elif [ $a != $b ]; then
echo "a != b";
fi
echo "######################关系运算符################";
#关系运算符
#关系运算符只支持数字,不支持字符串,除非字符串的值是数字
#下面是常用的关系运算符,a=10 ,b=20;
a=10;
b=20;
#-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
if [ $a -eq $b ]; then
echo "$a -eq $b,a等于b ";
else
echo "$a -eq $b,a不等于b "
fi
#-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
if [ $a -ne $b ]; then
echo "$a -ne $b,a不等于b";
else
echo "$a -ne $b,a等于b";
fi
#-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
if [ $a -gt $b ]; then
echo "a > b";
else
echo "a < b";
fi
#-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
if [ $a -lt $b ]; then
echo "a < b";
else
echo "a > b";
fi
#-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
if [ $a -ge $b ]; then
echo " a >= b";
else
echo "a < b";
fi
#-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
if [ $a -le $b ]; then
echo "a <= b";
else
echo "a > b";
fi
echo "######################布尔运算符################";
# ! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
if [ ! $a == $b ]; then
echo "a 不等于 b"
fi
# -o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
if [ $a -lt 100 -o $b -gt 1 ]; then
echo "-o ,或运算";
fi
#-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
if [ $a -gt 1 -a $b -gt 1 ]
then
echo "-a 与运算";
fi
echo "######################逻辑运算符################";
# && 逻辑的 AND [[ $a -lt 100 && $b -gt 100 ]] 返回 false
if [[ $a -lt 100 && $b -gt 0 ]]
then
echo "逻辑运算符 && ";
fi
# || 逻辑的 OR [[ $a -lt 100 || $b -gt 100 ]] 返回 true
if [[ $a -lt 100 || $b -gt 99 ]]
then
echo "逻辑运算符 || ";
fi
echo "######################字符串运算符################";
#下表列出了常用的字符串运算符,假定变量 a 为 "abc",变量 b 为 "efg":
# = 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
a="abc";
b="efg";
if [[ $a = $b ]]; then
echo "a=b";
else
echo "字符串 a !=b";
fi
# != 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
if [[ $a != $b ]];
then
echo "字符串 a !=b";
fi
# -z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
if [[ -z $a ]]; then
echo "\$a 为0";
else
echo "$a 不为0";
fi
# -n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n "$a" ] 返回 true。
if [ -n $a ]
then
echo "\$a 长度不为0";
else
echo "\$a 长度为0"
fi
# $ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。
if [ $a ]
then
echo "\$a 不为空";
fi
echo "######################文件测试运算符################";
file="C:\Users\EDZ\Desktop\shell\demo.txt";
# -b file 检测文件是否是块设备文件,如果是,则返回 true。 [ -b $file ] 返回 false。
if [[ ! -b $file ]]; then
echo "不是块设备文件";
fi
# -c file 检测文件是否是字符设备文件,如果是,则返回 true。 [ -c $file ] 返回 false。
if [[ ! -c $file ]]; then
echo "不是字符设备文件";
fi
# -d file 检测文件是否是目录,如果是,则返回 true。 [ -d $file ] 返回 false。
if [ ! -d $file ];then
echo "不是目录文件";
fi
# -f file 检测文件是否是普通文件(既不是目录,也不是设备文件),如果是,则返回 true。 [ -f $file ] 返回 true。
if [ -f $file ]; then
echo "普通文件";
fi
# -g file 检测文件是否设置了 SGID 位,如果是,则返回 true。 [ -g $file ] 返回 false。
if [ -g $file ];then
echo "包含SGID";
else
echo "没有包含SGID"
fi
# -k file 检测文件是否设置了粘着位(Sticky Bit),如果是,则返回 true。 [ -k $file ] 返回 false。
if [ -k $file ];then
echo "设置了粘着位";
else
echo "没有设置粘着位";
fi
# -p file 检测文件是否是有名管道,如果是,则返回 true。 [ -p $file ] 返回 false。
if [[ -p $file ]]; then
echo "是有名管道"
else
echo "不是有名管道";
fi
# -u file 检测文件是否设置了 SUID 位,如果是,则返回 true。 [ -u $file ] 返回 false。
if [ -u $file ] ; then
echo "是设置了SUID";
else
echo "没有设置SUID";
fi
# -r file 检测文件是否可读,如果是,则返回 true。 [ -r $file ] 返回 true。
if [ -r $file ] ; then
echo "可读";
else
echo "不可读";
fi
# -w file 检测文件是否可写,如果是,则返回 true。 [ -w $file ] 返回 true。
if [ -w $file ];then
echo "可写"
else
echo "不可写";
fi
# -x file 检测文件是否可执行,如果是,则返回 true。 [ -x $file ] 返回 true。
if [ -x $file ];then
echo "可执行";
else
echo "不可执行";
fi
# -s file 检测文件是否为空(文件大小是否大于0),不为空返回 true。 [ -s $file ] 返回 true。
if [ -s $file ];then
echo "文件不为空";
else
echo "文件为空";
fi
# -e file 检测文件(包括目录)是否存在,如果是,则返回 true。 [ -e $file ] 返回 true。
if [ -e $file ];then
echo "文件存在";
else
echo "文件不存在";
fi
echo "my name is zhangsan " > "C:\Users\EDZ\Desktop\shell\demo.txt";
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
- 113.
- 114.
- 115.
- 116.
- 117.
- 118.
- 119.
- 120.
- 121.
- 122.
- 123.
- 124.
- 125.
- 126.
- 127.
- 128.
- 129.
- 130.
- 131.
- 132.
- 133.
- 134.
- 135.
- 136.
- 137.
- 138.
- 139.
- 140.
- 141.
- 142.
- 143.
- 144.
- 145.
- 146.
- 147.
- 148.
- 149.
- 150.
- 151.
- 152.
- 153.
- 154.
- 155.
- 156.
- 157.
- 158.
- 159.
- 160.
- 161.
- 162.
- 163.
- 164.
- 165.
- 166.
- 167.
- 168.
- 169.
- 170.
- 171.
- 172.
- 173.
- 174.
- 175.
- 176.
- 177.
- 178.
- 179.
- 180.
- 181.
- 182.
- 183.
- 184.
- 185.
- 186.
- 187.
- 188.
- 189.
- 190.
- 191.
- 192.
- 193.
- 194.
- 195.
- 196.
- 197.
- 198.
- 199.
- 200.
- 201.
- 202.
- 203.
- 204.
- 205.
- 206.
- 207.
- 208.
- 209.
- 210.
- 211.
- 212.
- 213.
- 214.
- 215.
- 216.
- 217.
- 218.
- 219.
- 220.
- 221.
- 222.
- 223.
- 224.
- 225.
- 226.
- 227.
- 228.
- 229.
- 230.
- 231.
- 232.
- 233.
- 234.
- 235.
- 236.
- 237.
- 238.
- 239.
- 240.
- 241.
- 242.
- 243.
- 244.
- 245.
- 246.
- 247.
- 248.
- 249.
- 250.
- 251.
- 252.
- 253.
- 254.
- 255.
- 256.
- 257.