天天看點

字元串測試 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