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