shell练习
- shell脚本if判断变量介绍
(16条消息) shell脚本中if判断‘-a‘ - ‘-z‘含义_shell if -a_早九晚十二的博客-CSDN博客
1.判断参数是否存在,有输出绿色ok,无就输出红色failed
# echo -e "\\033[字背景颜色;字体颜色;字体属性m 需要输出的内容 \\033[0m"
\\033 转义起始符,定义一个转义序列,也可以使用 \\e 或 \\E 代替。
[ 表示开始定义颜色。
字背景颜色 范围 40-47 。
字体颜色 范围 30-37 。
黑底彩色:90-97 。
0默认,30黑,31红,32绿,33黄色,34蓝色,35紫色,35青色,37白色
m 转义终止符,表示颜色定义完毕。
再次使用 \\033[ ,表示再次开启颜色定义,0 表示颜色定义结束,所以 \\033[0m 的作用是恢复之前的配色方案。
[root@localhost she]# vim iscolor.sh
#!/bin/sh
iscolor(){if [ $# -ne 0 ]thenecho -e "\\e[32m ok \\e[0m"elseecho -e "\\e[31m failed \\e[0m"fi
}
read -p ”input:“ num
iscolor $num
2.判断有无位置参数
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n "$a" ] 返回 true。
[root@localhost she]# vim isset.sh#!/bin/sh
isset(){if [ ! -z $1 ]thenecho -e "$1"elseecho -e "无参:error"fi
}
isset $1
3.判断俩个变量的大小
gt大于、eq等于、ge大于等于、lt小于、le小于等于、ne不等于
[root@localhost she]# vim ismax.sh
ismax(){if [ $a -gt $b ]thenecho -e "$a"elif [ $a -eq $b ];thenecho -e "$a 等于 $b"elseecho -e "$b"fi
}
read -p "input:" a b
ismax $a $b
4.把密码文件按行赋值到数组中
#awk 每行按空格或TAB分割,输出文本
[root@localhost she]# ARRAY=($(awk '{print $0}' /etc/passwd))
[root@localhost she]# echo ${ARRAY[0]}
5.使用关联数组统计密码文件中用户使用的不同类型shell的数量
Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明,语法格式如下:
declare -A array_nameRS:Record Separator,记录分隔符
ORS:Output Record Separate,输出当前记录分隔符
FS:Field Separator,字段分隔符
OFS:Out of Field Separator,输出字段分隔符
declare -a array_1=( `awk 'BEGIN{ FS=":"; ORS=" " }{ print $7 } ' /etc/passwd` )
declare -A array_2
for i in ${array_1[*]}
dolet array_2[$i]++
donefor j in ${!array_2[@]}
doecho $j : ${array_2[$j]}
done
6.使用关联数组按扩展名统计指定目录中文件的数量
declare -a array_1=`ls`
declare -A array_2
for i in ${array_1[@]}
dolet array_2[${i#*.}]++
donefor j in ${!array_2[@]}
doecho $j : ${array_2[$j]}
done