知识点:*字符串比较*
1. == 测试是否相等,相等为真,不等为假
例:A=hello
B=hi
[ "$A" == "$B" ] #可以没有双引号
ECHO $?
2.!=测试是否不等,不等为真,相等为假
-n string: 测试制定字符串是否为空,空为真,不空为假
-z string: 测试制定字符串是否不空,不空为真,空为假
> >=
< <=
练习1:
传递一个用户名参数给脚本,判断此用户的用户名跟其基本组的组名是否一致,并将结
果显示出来。
#!/bin/bash
#
if [ -n $1 ]; then
echo "usage ni dei shu ru dong xi a "
exit 3
fi
if ! id $1 &> /dev/null; then
echo "$1 is not exist"
exit 2
fi
if [ `id -n -u $1` == `id -n -g $1` ]; then
echo "yiyang"
else
echo "buyiyang"
fi
练习2:
传递一个参数给脚本,如参数为q或者quit就退出脚本;否则就显示用户的参数;
#!/bin/bash
#
if [ $1 == 'q ' ] || [ $1 == 'quit' ];then
echo "已退出"
exit 11
fi
echo $1
知识点:保留小数点后面的两位 bc
例:scale=2 ###保留两位小数点
求111/22等于多少
echo “scale=2;111/22;” | bc
或者 bc <<< "scale=2;111/22;"
for循环模式:
for 变量 in 列表;do
循环体
done
例: for I in {1..100};do
seq 10 1,2,3,4,5,6,7,8,9,10 即1到10 所有的正整数
seq 5 10 5,6,7,8,9,10
seq 2 2 10 2,4,6,8,10
seq 1 2 10 1,3,5,7,9
相当于[1..10]
declare -i sum=0 声明×××
-x 声明成环境变量
练习:给系统中每个用户问声好,并显示对方的shell 提示如下
LINES =`wc -l /etc/passwd | cut -d' ' -f1` for I in seq 1 $LINES; do echo "hello, `head -n &I /etc/passwd | tail -1 | cut -d: -f1`"; done
练习:只向默认shell为bash的用户问声好
写一个脚本,利用random生成10个随机数,并找出其中最大值,和最小值
#!/bin/bash
2 #
3 declare -i max=0
4 declare -i min=0
5 for I in {1..10}; do
6 myrand=$RANDOM
7 [ $I -eq 1 ] && min=$myrand
8 if [ $myrand -lt 9 ]; then
9 echo -n "$myrand,"
10 else
11 echo "$myrand"
12 fi
13 [ $myrand -gt $max ] && max=$myrand
14 [ $myrand -lt $min ] && min=$myrand
15 done
16 echo "$min"
17 echo "$max"
转载于:https://blog.51cto.com/10183596/1683236