shell指令碼例子集錦(習題總結)

2022-09-08 09:18:09 字數 3252 閱讀 4528

練習一:寫乙個指令碼

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行,我 覺得編輯肯...