菜鸟学Linux 第018篇笔记 字符测试&&for循环
字符测试:
== 测试字符串是否相等 等为真,不等为假
A=hello B=hi
[[ $A == $B ]]
!= 测试字符串是否不等 不等为真,等为假
A=hello B=hello
[[ $A == $B ]]
>
<
单目操作符
-n 测试字符串是否为空,空则真,不空则假。
-s 测试字符串是否不空,不空为真,空为假。
循环
for
while
until
for循环
for 变量 in 列表; do
循环体
done
e.g. for I in 1 2 3 4 5 6 7 8 9 10; do
加法运算
done
如何生成列表
整数列表
{1..100} 1-100
seq print a sequence of numbers
e.g. `seq 10`
SYNOPSIS
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT(增量,步进) LAST
declare -i 声名变量为整数
小练习
script1
测试一个用户的用户ID和基本组ID是否一致;
script2
传递一个字符给脚本,如果参数为Q则退出脚本,否则就显示用户的参数;
script3
传递三个参数给脚本,第一个为整数,第二个为算术运算符,第三个为整数,
将计算结果显示出来,要求保留两位小数,形如 ./calc.sh 5 / 2
script4
计算1..100的和
script5
向默认shell的bash的用户问声好,并显示该用户的家目录。
script6
给一个参数add则
添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加。
给一个参数del则
删除10个用户user1到user10,但要求只有用户存在的情况下才能删除。
key:
script1
#!/bin/bash
#
if [ `id -nu $1` == `id -ng $1` ]; then
echo "Yi yang."
else
echo "Bu yiyang."
fi
script2
#!/bin/bash
#
if [ $1 = 'Q' ];then
exit 5
else
echo $1
fi
script3
#!/bin/bash
#
#echo "scale=2;$1$2$3;" | bc
bc <<< "scale=2;$1$2$3;"
script4
#!/bin/bash
#
declare -i SUM=0
for I in {1..100}; do
let SUM=$[$SUM+$I]
done
echo "1 + 100 = $SUM"
script5
#!/bin/bash
#
declare -i S=0
for I in `grep "bash\>" /etc/passwd | cut -d: -f1`; do
let S=S+1
HOOOM=`grep "bash\>" /etc/passwd | cut -d: -f6 | head -n $S | tail -1`
echo "hello, $I. your home directory is $HOOOM"
done
script6
#!/bin/bash
#
if [[ $1 = "add" ]];then
for I in `seq 10`; do
! id user$I &> /dev/null && useradd user$I
done
echo "The user1-10 is added."
elif [[ $1 = "del" ]];then
for L in `seq 10`; do
id user$L &> /dev/null && userdel -r user$L
done
echo "Delete user1-10 is complete."
else
echo "No such parameter"
exit 10
fi
编辑脚本错误总结:
1.if语句后边的条件一定要和if之间空一格;
2.字符测试时要双括号如[[ $1 == "abc" ]]
本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1863903如需转载请自行联系原作者
Winthcloud