天天看点

字符串测试 and for 循环 (笔记)

bash 三大测试 整数    文件    字符串(string)

字符串测试

== =   注意测试时必须等号两边有空格,中括号也要有空格 测试字符串是否相等,等为真,不等为假

!=     测试两个字符串,是否不等,不等为真,等为假

-n string 测试指定字符串是否为空,空为真,不空为假

-s string 测试指定字符串是否不空,不空为真,空为假

使用方法 

[root@localhost script]# A=name

[root@localhost script]# B=unname

[root@localhost script]# [ $A = $B ]    测试两个字符串是否相等注意=号两边要有空格

[root@localhost script]# echo $?

1

[root@localhost script]# [ $A != $B ]

[root@localhost script]# 

for 循环

循环控制结构: 进入条件,退出条件。

bash常用的循环: for while untill

for 循环使用格式:

for 变量 in 列表;do

    循环体

done 

如何生成整数列表

{1..100} 表示1-100

seq 起始数 步进长度 结束数 (sequence)

例 

seq 1 2 100 表示 从1开始 步进为2 到100结束  1,3 5,7....

seq 步进数可省略 起始数也可省略 默认其是从1开始,步进为1,需要设置是才用起始数和步进数

注意:在for 循环中使用seq命令需要加上命令替换符号``

还有一个命令declare

此命令是用来在脚本中声明变量的类型

linux 不可以做浮点运算

declare -i +变量  声明变量为整形 integer

declare -x +变量  声明变量为环境变量 export 

例:

for I in 1 2 3 4 5; do

    加法运算

done

下面整个实例呵呵参考一下;

算一下从1-100整数之和

[root@localhost script]# cat sum1_100.sh 

#!/bin/bash

#

declare -i SUM1=0

for NO1 in `seq 1 100`; do (注意:这里切记要加命令替换符号``)

SUM1=$[ $SUM1+$NO1 ]

echo "The sum is $SUM1"

执行结果

[root@localhost script]# bash sum1_100.sh 

The sum is 5050

用for 循环做一个批量添加用户 并且是给参数的,当输入为add 则添加用户,输入 del则删除用户

[root@localhost script]# cat useradd.sh 

if [ $# -eq 0 ]; then

echo "You must input value add or del"

exit 88

fi

if [ $1 = add ]; then 

for USER1 in `seq 1 10` ; do 

id "user$USER1" &> /dev/null 

CHECK=`echo $?`

if [ $CHECK -eq 0 ]; then

echo "That user$USER1 is exist"

else 

useradd -m "user$USER1"

echo "user$USER1" | passwd --stdin &> /dev/null

echo "user1-10 is created!!!"

exit 20

elif [ $1 = del ];then

for DEL1 in {1..10};do

id "user$DEL1" &> /dev/null

CHECK1=`echo $?`

if [ $CHECK1 -ne 0 ];then

echo "That user$DEL1 not exist"

userdel -r "user$DEL1"

echo "Delete user1-10 is successful!"

echo " you only input del or add"

[root@localhost script]# ./useradd.sh add

user1-10 is created!!!

[root@localhost script]# ./useradd.sh del

Delete user1-10 is successful!

[root@localhost script]# ^C

脚本

列出shell 为nologin 的有多少用户 并且列出他们是谁, shell 为bash 的有多少用户 ,并列出是谁。

[root@localhost script]# cat shellnumber.sh 

NOUSER=`grep "nologin$" /etc/passwd | wc -l | cut -d' ' -f1`

USER1=`grep "nologin$" /etc/passwd | cut -d':' -f1` 

echo "NOLOGIN "$NOUSER" user, they are "$USER1""

NOUSER=`grep "bash$" /etc/passwd | wc -l | cut -d' ' -f1`

USER1=`grep "bash$" /etc/passwd | cut -d':' -f1`

echo "bash "$NOUSER" user, they are "$USER1""

[root@localhost script]#

[root@localhost script]# bash shellnumber.sh 

NOLOGIN 31 user, they are bin daemon adm lp mail uucp operator games gopher ftp nobody dbus usbmuxd vcsa rtkit avahi-autoipd abrt haldaemon gdm ntp apache saslauth postfix pulse sshd tcpdump rpc rpcuser nfsnobody named hbase

bash 5 user, they are root home normaluser tom openstack

end , thank for your watching!

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1632148如需转载请自行联系原作者

Winthcloud