shell指令碼編寫例項一

2021-06-27 11:03:43 字數 3132 閱讀 8978

練習一:寫乙個指令碼

1.設定變數file的值為/etc/passwd

2.依次向/etc/passwd中的每個使用者問好,並且說出對方的id是什麼

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目錄中的每個檔案或子目錄問好,形如:

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 +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 

makefile編寫例項

本文記述了乙個簡單的makefile編寫測試例項,第一步很重要,有了這個原始的例子,我們可以走得更遠,也是本人在學完 檔案清單如下 created by sf.kaka 090329 main.c include func1.h include func2.h int main func1.c vo...

Spring Cache編寫例項

首先我們來看一下如何使用spring3.1自己的cache,需要在命名空間中增加cache的配置 然後加入申明處理 然後在dao類中加入快取方法 andcache是儲存的地方 eventi是key值用於尋找儲存例項 cacheable value andcache key eventid publi...

m指令碼檔案編寫例項 逆padel map

i 車速 油門 扭矩力padel map p 座標軸轉換 插值 索引 提取 o 車速 扭矩力 油門逆padel map 面向過程設計 獲取資料 處理資料 輸出資料 矩陣操作 二維矩陣最值獲取 大小 max max a 位置 x,y find max max a 索引元素 find 實現索引目標元素位...