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