shell编程
1)shell数组
#!/bin/bash # author:king my_array=(a b c ds) echo "第一个元素": ${my_array[0]} echo "第一个元素": ${my_array[1]} echo "第一个元素": ${my_array[2]} echo "第一个元素": ${my_array[3]} echo "数组的元素": ${my_array[*]} echo "数组的元素个数是": ${#my_array[@]} [root@zabbix-c48 scripts]# ./array.sh #./这样执行shell,是没空格且加了x权限的 第一个元素: a 第一个元素: b 第一个元素: c 第一个元素: ds 数组的元素: a b c ds 数组的元素个数是: 4 [root@zabbix-c48 scripts]#
2)shell运算符
#!/bin/bash # author:king a=10 b=20 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 $b / $a` echo "b / a : $val" val=`expr $b % $a` echo "b % a : $val" if [ $a == $b ] then echo "a 等于 b" fi if [ $a != $b ] then echo "a 不等于 b" fi [root@zabbix-c48 scripts]# chmod +x ajcc.sh [root@zabbix-c48 scripts]# ./ajcc.sh a + b : 30 a - b : -10 a * b : 200 b / a : 2 b % a : 0 a 不等于 b [root@zabbix-c48 scripts]#
3)关系运算符
#!/bin/bash # author:king a=10 b=20 if [ $a -eq $b ] then echo "$a -eq $b : a 等于 b" else echo "$a -eq $b: a 不等于 b" fi if [ $a -ne $b ] then echo "$a -ne $b: a 不等于 b" else echo "$a -ne $b : a 等于 b" fi if [ $a -gt $b ] then echo "$a -gt $b: a 大于 b" else echo "$a -gt $b: a 不大于 b" fi if [ $a -lt $b ] then echo "$a -lt $b: a 小于 b" else echo "$a -lt $b: a 不小于 b" fi if [ $a -ge $b ] then echo "$a -ge $b: a 大于或等于 b" else echo "$a -ge $b: a 小于 b" fi if [ $a -le $b ] then echo "$a -le $b: a 小于或等于 b" else echo "$a -le $b: a 大于 b" fi [root@zabbix-c48 scripts]# ./gxys.sh 10 -eq 20: a 不等于 b 10 -ne 20: a 不等于 b 10 -gt 20: a 不大于 b 10 -lt 20: a 小于 b 10 -ge 20: a 小于 b 10 -le 20: a 小于或等于 b [root@zabbix-c48 scripts]#
4)布尔运算
#!/bin/bash # author:king a=10 b=20 if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a == $b: a 等于 b" fi if [ $a -lt 100 -a $b -gt 15 ] then echo "$a 小于 100 且 $b 大于 15 : 返回 true" else echo "$a 小于 100 且 $b 大于 15 : 返回 false" fi if [ $a -lt 100 -o $b -gt 100 ] then echo "$a 小于 100 或 $b 大于 100 : 返回 true" else echo "$a 小于 100 或 $b 大于 100 : 返回 false" fi if [ $a -lt 5 -o $b -gt 100 ] then echo "$a 小于 5 或 $b 大于 100 : 返回 true" else echo "$a 小于 5 或 $b 大于 100 : 返回 false" fi [root@zabbix-c48 scripts]# ./ber.sh 10 != 20 : a 不等于 b 10 小于 100 且 20 大于 15 : 返回 true 10 小于 100 或 20 大于 100 : 返回 true 10 小于 5 或 20 大于 100 : 返回 false [root@zabbix-c48 scripts]#
5)逻辑运算符
#!/bin/bash # author:king a=10 b=20 if [[ $a -lt 100 && $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi if [[ $a -lt 100 || $b -gt 100 ]] then echo "返回 true" else echo "返回 false" fi [root@zabbix-c48 scripts]# ./lj.sh 返回 false 返回 true [root@zabbix-c48 scripts]#
6)字符串运算符
#!/bin/bash # author:king a="abc" b="efg" if [ $a = $b ] then echo "$a = $b : a 等于 b" else echo "$a = $b: a 不等于 b" fi if [ $a != $b ] then echo "$a != $b : a 不等于 b" else echo "$a != $b: a 等于 b" fi if [ -z $a ] then echo "-z $a : 字符串长度为 0" else echo "-z $a : 字符串长度不为 0" fi if [ -n "$a" ] then echo "-n $a : 字符串长度不为 0" else echo "-n $a : 字符串长度为 0" fi if [ $a ] then echo "$a : 字符串不为空" else echo "$a : 字符串为空" fi [root@zabbix-c48 scripts]# chmod +x str.sh [root@zabbix-c48 scripts]# ./str.sh abc = efg: a 不等于 b abc != efg : a 不等于 b -z abc : 字符串长度不为 0 -n abc : 字符串长度不为 0 abc : 字符串不为空 [root@zabbix-c48 scripts]#
7)文件测试运算符
#!/bin/bash # author:king file="/var/log/mysqld.log" if [ -r $file ] then echo "文件可读" else echo "文件不可读" fi if [ -w $file ] then echo "文件可写" else echo "文件不可写" fi if [ -x $file ] then echo "文件可执行" else echo "文件不可执行" fi if [ -f $file ] then echo "文件为普通文件" else echo "文件为特殊文件" fi if [ -d $file ] then echo "文件是个目录" else echo "文件不是个目录" fi if [ -s $file ] then echo "文件不为空" else echo "文件为空" fi if [ -e $file ] then echo "文件存在" else echo "文件不存在" fi [root@zabbix-c48 log]# chmod +x file.sh [root@zabbix-c48 log]# ./file.sh 文件可读 文件可写 文件不可执行 文件为普通文件 文件不是个目录 文件不为空 文件存在 [root@zabbix-c48 log]#
与人善言,暖于布锦,伤人之言,深于矛戟