練習一:寫一個腳本
1.設定變量FILE的值為/etc/passwd
2.依次向/etc/passwd中的每個使用者問好,并且說出對方的ID是什麼
形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`)
Hello,root,your UID is 0.
3.統計一個有多少個使用者
答案一:#!/bin/bash
file="/etc/passwd"
LINES=`wc -l $file | cut -d" " -f1`
for I in `seq 1 $LINES`;do
userid=`head -$I $file | tail -1 |cut -d: -f3`
username=`head -$I $file | tail -1 |cut -d: -f1`
echo "hello $username,your UID is $userid"
done
echo "there are $LINES users"
答案二:#!/bin/bash
file=/etc/passwd
let num=0
for I in `cat $file`;do
username=`echo "$I" | cut -d: -f1`
userid=`echo "$I" | cut -d: -f3`
echo "Hello,$username,your UID is $userid"
num=$[$num+1]
done
echo "there are $num users"
練習二:寫一個腳本
1.切換工作目錄至/var
2.依次向/var目錄中的每個檔案或子目錄問好,形如:
(提示:for FILE in /var/*;或for FILE in `ls /var`;)
Hello,log
3.統計/var目錄下共有多個檔案,并顯示出來
答案:#!/bin/bash
cd /var
let num=0
for I in `ls /var/*`;do
echo "hello $I"
num=$[$num+1]
done
echo "the number of files is $num"
練習三:寫一個腳本
1.設定變量file的值為/etc/passwd
2.使用循環讀取檔案/etc/passwd的第2,4,6,10,13,15行,并顯示其内容
3.把這些行儲存至/tmp/mypasswd檔案中
答案:#!/bin/bash
file="/etc/passwd"
for I in 2 4 6 10 13 15;do
exec 3>/tmp/mypasswd
line=`head -$I $file | tail -1`
echo "$line"
echo "$line" >&3
exec 3>&-
done
練習四:寫一個腳本
傳遞兩個整數給腳本,讓腳本分别計算并顯示這兩個整數的和,差,積,商
答案如下:vimtest.sh
#!/bin/bash
echo "first number $1" (表示輸出第一個數)
echo"second number $2" (表示輸出第二個數)
echo"$(($1+$2))" (輸出兩數之和)
echo"$[$1-$2]" (輸出兩數之差)
echo"$[$1*$2]" (輸出兩數之積)
echo"$[$1/$2]" (輸出兩數之商)
:wq (表示儲存并退出vi編輯器)
chmod +xtest.sh (給test.sh執行的權限)
./test.sh 23 (傳遞兩個參數并執行腳本
作業一:寫一個腳本:
1.建立目錄/tmp/scripts
2.切換工作目錄至此目錄中
3.複制/etc/pam.d目錄至目前目錄,并重命名為test
4.将目前目錄的test及其裡面的檔案和子目錄的屬主改為redhat
5.将test及其子目錄中的檔案的其它使用者的權限改為沒有任何權限
答案:
#!/bin/bash
mkdir-v /tmp/scripts
cd /tmp/scripts
cp -r /etc/pam.d ./test
chown -R redhat ./test
chmod -R o=--- ./test
作業二:寫一個腳本
1.顯示目前系統日期和時間,而後建立目錄/tmp/lstest
2.切換工作目錄至/tmp/lstest
3.建立目錄a1d,b56e,6test
4.建立空檔案xy,x2y,732
5.列出目前目錄下以a,x或者6開頭的檔案或目錄
6.列出目前目錄下以字母開頭,後跟一個任意數字,而後跟任意長度字元的檔案或目錄
答案:
#!/bin/bash
date
mkdir-pv /tmp/lstest
cd /tmp/lstest
mkdira1d b56e 6test
touchxy x2y 732
ls [ax6]*
ls [[:alpha:]][[:digit:]]*
作業三:寫一個腳本
添加10個使用者user1到user10,但要求隻有使用者不存在的情況下才能添加
答案:
#!/bin/bash
for I in `seq 1 10`;do
cut -d: -f1 /etc/passwd |grep "user$I"2>>/tmp/etc.err || useradduser$I
done
作業四:寫一個腳本
通過ping指令測試192.168.0.151到192.168.0.254之間的所有主機是否線上
如果線上,就顯示“ip is up”
如果不線上,就顯示“ip is down”
答案:#!/bin/bash
for I in `seq 151 254`;do
ping -c1 -w1 192.168.0.$I&>/dev/null&& echo "192.168.0.$I is up"|| echo "192.168.0.$I is down"
done