for:語法格式
for 變量 in 列表; do
循環語句
done
for I in 1 2 3 4 5;do
加法運算
done
遍歷完成之後,退出:
如何生成列表:
{1..100}
declare -i sum=0 定義sum為整形
-x 聲明成環境變量
`seq [起始數 步進長度] 結束數`
#!/bin/bash
declare -i SUM=0
for I in {1..100};do
letSUM=$SUM+$I
done
echo “The sum is :$SUM.”
2.向每個用戶問好
[root@localhost ~]# LINES=`wc -l/etc/passwd | cut -d':' -f1`
[root@localhost ~]# for I in `seq 1 $LINES`;do echo "Hello,`head -$I /etc/passwd |tail -1 |cut -d':' -f1`";done
寫一個腳本,
1.設定變量FILE的值為/etc/passwd
2.向每個用戶問好,並顯示用戶的shell。列如Hello,root,your shell :/bin/bash
#!/bin/bash
#
FILE=/etc/passwd
LINE=`wc -l $FILE |cut -d' ' -f1`
for I in `seq 1 $LINE`;do
echo "Hello,`head -$I /etc/passwd |tail -1 |cut -d':' -f1`,yourshell:`head -$I /etc/passwd |tail -1 |cut -d':' -f7`"
done
3 統計一共有多少個用戶
只向默認shell 為bash的用戶問聲好
#!/bin/bash
#
LL=`sed -r -n '/bash/'p /etc/passwd |wc -l`
for I in `seq 1 $LL`; do
echo"Hello,`sed -r -n '/bash$/'p /etc/passwd | head -$I | tail -1 |cut -d':'-f1`"
done
寫一個腳本
添加10個用戶user1 到user10 ,但是要求只有用戶不存在的情況下才能添加:
#!/bin/bash
#
for I in{1..10};do
iduser$I &>/dev/null
if [ $? -eq 0 ]; then
echo "yonghucunzai"
else
useradd user$I &>/dev/null
echo "user$I" |passwd --stdinuser$I &>/dev/null
echo "add user$I OK"
fi
done擴展:接受一個參數Add :添加用戶uer1..user10Del : 刪除用戶:user1..user10
#!/bin/bash
#
if [ $#-eq 1 ];then
if [ $1 ='add' ];then
for I in {1..10};do
id user$I &>/dev/null
if [ $? -eq 0 ]; then
echo "yonghucunzai"
else
useradd user$I &>/dev/null
echo "user$I" |passwd--stdin user$I &>/dev/null
echo "add user$I OK"
fi
done
elif [ $1= 'del' ];then
for I in {1..10};do
id user$I &> /dev/null
if [ $? -eq 0 ];then
userdel -r user$I
echo "del user OK"
else
echo "no such user"
exit 1
fi
done
else
echo " add&del"
fi
else
echo "qing churu yige canshu,del&add"
fi 寫一個腳本 計算100以內所有能被3整除的正整數的和
#!/bin/bash
#
declare-i M
M=0
for I in{1..100};do
if [ `echo "$I%3"|bc` -eq 0];then
M=$I+$M
else
M=$M
fi
done
echo "sum=$M" 寫一個腳本計算100以內所有奇數的和以及所有偶數的和;分別顯示之;#!/bin/bash
#
declare-i M
declare-i J
declare-i B
M=0
J=0
for I in{1..100};do
B=`echo "$I%2"|bc`
if [ $B -eq 0 ];then
M=$I+$M
else
J=$I+$J
fi
done
echo"oushu=$M;jishu=$J"
寫一個腳本。分別顯示當前系統上所有默認的shell 為bash 的用戶和默認shell為/sbin/nologin的用戶,並統計各類shell下的用戶總數顯示結果如:#!/bin/bash
#
M=`sed -n'/bash$/p' /etc/passwd |wc -l`
J=`sed -n'/\/sbin\/nologin$/p' /etc/passwd |wc -l`
for I in`seq 1 $M`;do
echo "`sed -n '/bash$/p' /etc/passwd|head -$I |tail -1 |cut -d':' -f1` is bash"
done
for I in`seq 1 $J`;do
echo "`sed -n '/\/sbin\/nologin$/p'/etc/passwd |head -$I |tail -1 |cut -d':' -f1` is /sbin/nologin"
done
echo "/bash=$M;/sbin/nologin=$J"
本文出自 “linux運維” 博客,轉載請與作者聯系!