一、簡介
從程式設計師的角度來看, shell本身是一種用c語言編寫的程式,從使用者的角度來看,shell是使用者與linux作業系統溝通的橋梁。使用者既可以輸入命令執行,又可以利用 shell指令碼程式設計,完成更加複雜的操作。在linux gui日益完善的今天,在系統管理等領域,shell程式設計仍然起著不可忽視的作用。深入地了解和熟練地掌握shell程式設計,是每乙個linux使用者的必修課之一。
linux的shell種類眾多,常見的有:bourne shell(/usr/bin/sh或/bin/sh)、bourne again shell(/bin/bash)、c shell(/usr/bin/csh)、k shell(/usr/bin/ksh)、shell for root(/sbin/sh),等等。不同的shell語言的語法有所不同,所以不能交換使用。每種shell都有其特色之處,基本上,掌握其中任何一種就足夠了。在本文中,我們關注的重點是bash,也就是bourne again shell,由於易用和免費,bash在日常工作中被廣泛使用;同時,bash也是大多數linux系統預設的shell。
二、程式設計例項
程式1:批量並行telnet
在網路測試過程中,我們需要從某台伺服器telnet其他很多伺服器的某個埠,如22埠,如果能夠批量並行的執行telnet對端埠,將大大提高測試效率,利用shell程式設計可實現這一功能。
#檔案結構
test10-was%tree.|--ip.list #測試ip列表
|-- telnet_port.sh #測試shell指令碼
|--telnetalive.txt #連通結果集
|--telnetnotalive.txt #未連通結果集
`-- telnetresult.txt #日誌
#檔名:ip.list
#功能:儲存待測試ip列表
#格式如下
10.87.30.1010.87.30.11
10.87.30.12
10.87.30.13
10.87.30.14 #此處需下空一行,並再次書寫最終ip
#檔名:telnet_port.sh#功能:網路測試#!/bin/bashrm telnetresult.txt >/dev/null
2>&1
rm telnetalive.txt >/dev/null
2>&1
rm telnetnotalive.txt >/dev/null
2>&1
testport=30000
#要測試的埠號
for i in $(cat
ip.list)
do (telnet $i $testport<>telnetresult.txt &)>>telnetresult.txt 2>&1
sleep
1quit
eofdone
cat telnetresult.txt | grep -b 1 \] | grep [1-9] | awk執行:'' | cut -d '
.' -f 1,2,3,4 >telnetalive.txt
cat ip.list telnetalive.txt | sort | uniq -u > telnetnotalive.txt
shell程式設計例項
1.在 home資料夾中建立一百個資料夾。資料夾名稱依次為a1 a100.3.寫乙個程式,能夠將 et passwd的第一列取出,並且每一列都以一行字串 the 1 account is root 來顯示 4.編寫乙個程式,他的作用是先檢視一下 root test logical這個名稱是否存在。若...
shell程式設計小例項
linux就該這麼學 1,if else bin bash read p enter your score 0 100 grade if grade ge 85 grade le 100 then echo grade is excellent elif grade ge 70 grade le 8...
shell常用程式設計及例項
變數 aaa lv 不要空格 echo aaa lv echo txt lvtxt echo aaa.txt lv.txt 求值 a 1b 2 1 let let c a b echo c 32 d a b echo d 33 e a b echo e 3條件判斷 1 數值判斷 ne lt less...