> 文章列表 > shell练习

shell练习

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_name

RS: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