練習一:寫乙個指令碼1.設定變數file的值為/etc/passwd
2.依次向/etc/passwd中的每個使用者問好,並且說出對方的id是什麼
" -f1`)
hello,root,your uid is0
.
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
練習四:寫乙個指令碼
傳遞兩個整數給指令碼,讓指令碼分別計算並顯示這兩個整數的和,差,積,商
答案如下:vim test.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 +x test.sh (給test.sh執行的許可權)
./test.sh 2 3 (傳遞兩個引數並執行指令碼
作業一:寫乙個指令碼:
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
mkdir a1d b56e 6test
touch xy 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 || useradd user$i
done
作業四:寫乙個指令碼
答案: #!/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
shell指令碼例子
1.主要用awk實現兩個檔案的處理 number 0 if f level number.date y m d then awk f nr fnr nr fnr level number.date y m d d 1 day level number.date y m d sort today ye...
AWK 指令碼例子
能夠到乙個類似與 data sandbox scanresult 0 1 41435 42458 2 result.xml 的路徑,在該檔案目錄下還有乙個以md5命名的檔案。需求是 根據xml 路徑得到md5 全部xml 檔案路徑儲存在 randomsample55000 20150105 vre....
027幾個指令碼例子
本章包含了我最常用的幾個指令碼。你會發現它們都相當短小而簡單。這就是指令碼的乙個優 點 它不是很長 很複雜,只需很短的 就能夠完成相當多的功能,可以節約大量的時間。本章中包含以下內容 各種指令碼的例子。我本來打算在本章中提供乙個通用的資料驗證資料庫指令碼,但是由於它超過了5 0 0行,我 覺得編輯肯...