1. 程式人生 > >5個shell指令碼程式設計入門練習示例

5個shell指令碼程式設計入門練習示例

出處:http://www.jb51.net/article/51359.htm

例子一:繪製特殊圖形

複製程式碼程式碼如下:
#!/bin/bash
 
MAX_NO=0
 
echo -n "Enter Number between (5 to 9) : "
 read MAX_NO
 
if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then
 echo "WTF... I ask to enter number between 5 and 9, Try Again"
 exit 1
 fi
 
clear
 
for (( i=1; i=i; s-- ))
 do
 echo -n " "
 done
 for (( j=1; j=1; i-- ))
 do
 for (( s=i; s<=MAX_NO; s++ ))
 do
 echo -n " "
 done
 for (( j=1; j<=i; j++ ))
 do
 echo -n " ."
 done
 echo ""
 done
 
echo -e "\n\n\t\t\t Whenever you need help, Tecmint.com is always there"
你應該不會被上述例子中的“關鍵字”困擾了,很多都是你熟悉的,或者從它們的名字可以猜出它們的意思,如“max”設定某個變數的最大值,“for”是一個迴圈。

輸出結果:

複製程式碼程式碼如下:
[[email protected] ~]# chmod 755 Special_Pattern.sh
[[email protected] ~]# ./Special_Pattern.sh
Enter Number between (5 to 9) : 6
       .
      . .
     . . .
    . . . .
   . . . . .
  . . . . . .
  . . . . . .
   . . . . .
    . . . .
     . . .
      . .
       .
 
        Whenever you need help, Tecmint.com is always there
如果你有其它語言的程式設計基礎,那麼學習上面的指令碼對你來說應該很容易。即使你是計算機方面的新手,這個學習過程也不會太難。

例子二:五顏六色的指令碼

Linux終端也是支援五顏六色的,請看下面的指令碼:

複製程式碼程式碼如下:
#!/bin/bash
 
clear
echo -e "\033[1m Hello World"
 # bold effect
echo -e "\033[5m Blink"
       # blink effect
echo -e "\033[0m Hello World"
 # back to noraml
 
echo -e "\033[31m Hello World"
 # Red color
echo -e "\033[32m Hello World"
 # Green color
echo -e "\033[33m Hello World"
 # See remaing on screen
echo -e "\033[34m Hello World"
echo -e "\033[35m Hello World"
echo -e "\033[36m Hello World"
 
echo -e -n "\033[0m"
  # back to noraml
echo -e "\033[41m Hello World"
echo -e "\033[42m Hello World"
echo -e "\033[43m Hello World"
echo -e "\033[44m Hello World"
echo -e "\033[45m Hello World"
echo -e "\033[46m Hello World"
 
echo -e "\033[0m Hello World"

輸出結果:



你可以對上面的列子舉一反三,把它用到你自己的指令碼中去。

例子三:加密檔案/目錄

下面的例子演示瞭如何加密一個份檔案或者資料夾。目前的這個版本的指令碼有一些侷限,例如你必須把它和你要加密的檔案/目錄放到同一個資料夾下面。另外,你可能需要安裝“pinentry-gui”。在Fedora下安裝“pinentry-gui”的命令是:

複製程式碼程式碼如下: [[email protected] ~]# yum install pinentry-gui
在Ubuntu/Debian下安裝“pinentry-gui”的命令是:
複製程式碼程式碼如下: [[email protected] ~]# apt-get install pinentry-gui
建立一個指令碼“Encrypt.sh”,將下面的程式碼複製進去。你也可以從這裡下載這個指令碼。
複製程式碼程式碼如下:
#!/bin/bash
echo "Welcome, I am ready to encrypt a file/folder for you"
echo "currently I have a limitation, Place me to the same folder,
where a file to be encrypted is present"
echo "Enter the Exact File Name with extension"
read file;
gpg -c $file
echo "I have encrypted the file sucessfully..."
echo "Now I will be removing the original file"
rm -rf $file
輸出結果:
複製程式碼程式碼如下:
[[email protected] ~]# chmod 755 Encrypt.sh
[[email protected] ~]# ./Encrypt.sh
 
Welcome, I am ready to encrypt a file/folder for you
currently I have a limitation, Place me to the same folder,
where a file to be encrypted is present
Enter the Exact File Name with extension
 
package.xml
 
                   Enter passphrase
 
                   Passphrase _________________________________
 
 
                   Please re-enter this passphrase
 
                   Passphrase _________________________________
 
 
I have encrypted the file successfully...
Now I will be removing the original file
程式碼說明:

gpg -c: 這個命令使用aka來加密檔案。 在你需要的時候,你需要對加密的檔案進行解密。這裡我們不給出具體的程式碼了,你可以自己嘗試著寫出來。提示:使用命令 gpg -d filename.gpg > filename 可以解密一份檔案。

例子四:檢視伺服器利用率

檢視伺服器的利用率是管理員的一份重要的日常工作。聰明的管理員是知道如何是這份任務自動化的。下面的這份指令碼會抓取伺服器的很多資訊,快快試試吧!

複製程式碼程式碼如下:
#!/bin/bash
date;
echo "uptime:"
uptime
echo "Currently connected:"
w
echo "--------------------"
echo "Last logins:"
last -a |head -3
echo "--------------------"
echo "Disk and memory usage:"
df -h | xargs | awk '{print "Free/total disk: " $11 " / " $9}'
free -m | xargs | awk '{print "Free/total memory: " $17 " / " $8 " MB"}'
echo "--------------------"
start_log=`head -1 /var/log/messages |cut -c 1-12`
oom=`grep -ci kill /var/log/messages`
echo -n "OOM errors since $start_log :" $oom
echo ""
echo "--------------------"
echo "Utilization and most expensive processes:"
top -b |head -3
echo
top -b |head -10 |tail -4
echo "--------------------"
echo "Open TCP ports:"
nmap -p- -T4 127.0.0.1
echo "--------------------"
echo "Current connections:"
ss -s
echo "--------------------"
echo "processes:"
ps auxf --width=200
echo "--------------------"
echo "vmstat:"
vmstat 1 5
輸出結果:
複製程式碼程式碼如下:
[[email protected] ~]# chmod 755 Server-Health.sh
[[email protected] ~]# ./Server-Health.sh
 
Tue Jul 16 22:01:06 IST 2013
uptime:
22:01:06 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18
Currently connected:
22:01:06 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT
tecmint pts/0 116.72.134.162 21:48 0.00s 0.03s 0.03s sshd: tecmint [priv]
--------------------
Last logins:
tecmint pts/0 Tue Jul 16 21:48 still logged in 116.72.134.162
tecmint pts/0 Tue Jul 16 21:24 - 21:43 (00:19) 116.72.134.162
--------------------
Disk and memory usage:
Free/total disk: 292G / 457G
Free/total memory: 3510 / 3838 MB
--------------------
OOM errors since Jul 14 03:37 : 0
--------------------
Utilization and most expensive processes:
top - 22:01:07 up 174 days, 4:42, 1 user, load average: 0.36, 0.25, 0.18
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.0%sy, 0.0%ni, 99.3%id, 0.6%wa, 0.0%hi, 0.0%si, 0.0%st
 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 3788 1128 932 S 0.0 0.0 0:32.94 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:14.07 migration/0

例子五:檢視硬碟使用情況及傳送提示郵件

下面的這個例子展示了當硬碟的使用空間超出了預期設定的值時,如果通過指令碼來發送提示郵件。

複製程式碼程式碼如下: MAX=95
[email protected]
PART=sda1
 
USE=`df -h |grep $PART | awk '{ print $5 }' | cut -d'%' -f1`
if [ $USE -gt $MAX ]; then
echo "Percent used: $USE" | mail -s "Running out of disk space" $EMAIL
fi

說明:將上述指令碼中的“USER”替換成你的使用者名稱。你可以通過命令“mail”來檢視你的郵件。

相關推薦

5shell指令碼程式設計入門練習示例

出處:http://www.jb51.net/article/51359.htm 例子一:繪製特殊圖形 複製程式碼程式碼如下: #!/bin/bash   MAX_NO=0   echo -n "Enter Number between (5 to 9) : "

shell指令碼程式設計入門

示例 看個例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解釋 第1行:指定指令碼直譯器,這裡是用

Shell程式設計-01-Shell指令碼初步入門

什麼是Shell     簡單來說Shell其實就是一個命令直譯器,而它的作用就是解釋並執行使用者輸入的命令及程式。使用者每輸入一條命令,Shell就解釋執行一次。這種方式很容易讓大家想起在Windows環境中使用的command命令,我們在cmd視窗輸入一條命令,按下Enter鍵,則執行相應的命令和結果。

Shell指令碼程式設計之(二)簡單的Shell指令碼練習

練習題1:互動式指令碼(使用者決定變數內容) 程式碼 [[email protected] bin]$ vim showname.sh #!/bin/bash # Program: # User inputs his first name and last

從新手到系統管理員(二):Linux新手學習Shell指令碼程式設計的五例子

本文由 [茶話匯] – [Qing] 編譯自 [Avishek Kumar] 轉載請註明出處 例子一:繪製特殊圖形 [code language=”bash”] #!/bin/bash MAX_NO=0 echo -n "Enter Number between (5 to 9) : " re

30分鐘入門Shell指令碼程式設計

什麼是Shell指令碼 示例 #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解釋 第1行:指定指令碼直譯器,這裡是用

Shell指令碼程式設計——瞭解你的Linux系統必須掌握的20命令

    要想詳細瞭解你的Linux系統,為系統評估和效能調化提供準確的資訊,那麼,你會經常用到這幾組命令。一. 系統資訊    1. 檢視核心版本、編譯主機、編譯器版本和編譯時間的資訊   cat /proc/version                         

CentOS 7 Shell指令碼程式設計第一講 Shell知識入門

開發十年,就只剩下這套架構體系了! >>>   

Linux-Shell指令碼程式設計基礎(1)

1. 我們一般在使用Linux系統的時候,都活接觸到shell指令碼的使用,例如我們經常在linux系統中使用的ls命令、cd命令等,都是衣蛾簡單而又基本的shell命令,在 linux系統中我們一般的使用如下的格式來進行shell指令碼的編寫: (1)格式 #!bin/bash e

SHELL指令碼程式設計_1

title: SHELL指令碼程式設計_1 data: 2018-9-18 tags: [SHELL,指令碼,程式設計,學習] categories: [學習,SHELL] grammar_cjkRuby: true copyright: true 我已經瞭解瞭如何使用shell的

Linux Shell指令碼程式設計 --awk命令詳解

簡單使用: awk :對於檔案中一行行的獨處來執行操作 。 awk -F :'{print $1,$4}'   :使用‘:’來分割這一行,把這一行的第一第四個域打印出來 。    

Linux命令列與shell指令碼程式設計大全(二)

十一、處理使用者輸入 命令列引數 讀取引數: $0是程式名,$1是第一個引數,$2是第二個引數,以此類推,直到第9個引數$9。當引數個數超過10以後,需要在變數數字周圍加上花括號,如${10},如果輸入到命令列的引數是字串且含有空格,需要使用引號。 #! /bin/bash echo

Linux命令列與shell指令碼程式設計大全(一)

一、基本 bash shell命令 建立檔案 : touch 連結檔案:符號連結:是一個實實在在的檔案,兩個通過符號連結在一起的檔案,彼此的內容並不相同。使用ln -s命令。 硬連結:會建立獨立的虛擬檔案,其中包含了原始檔案的資訊及位置。但他們從根本上而言是同一個檔案。原始檔案必須事

Linux命令列與shell指令碼程式設計大全(三)

十二、呈現資料 輸入和輸出     標準檔案描述符                  0 STDIN 標準輸入   &n

《Linux命令列與shell指令碼程式設計大全》讀書筆記————第三章 基本的bash shell命令

本章內容 1、使用shell 2、bash手冊 3、瀏覽檔案系統 4、檔案和目錄列表 5、管理檔案和目錄 6、檢視檔案內容   3.3 bash手冊 命令: man  xterm  作用:檢視檢視xterm使用者手冊 man命

《Linux命令列與shell指令碼程式設計大全》讀書筆記————第一章 初識Linux shell

本章內容 1、什麼是Linux 2、Linux核心的組成   1、1 什麼是Linux Linux課劃分為以下四部分 a)Linux核心 b)GNU工具 c)圖形化桌面環境 d)應用軟體   1.1.1 深入探究Linux核心

shell指令碼程式設計續---分支語句

if語句做條件判斷 單分支: if 判斷條件;then        statement1        statement2 fi 雙分支: if  判斷條件;then &nb

shell 指令碼程式設計

編譯器、直譯器 程式語言分為:機器語言(010101 程式碼)、組合語言、高階語言(比較接近於人類的思考方 式,也接近於機器的執行特性,需要編譯器或者直譯器轉換成機器語言)  高階語言基本可以分為兩類: 靜態語言:編譯型語言,一般都是強型別的語言    

70shell指令碼面試問題和解答

轉載地址: 原文連結:http://linux.cn/article-5607-1.html 我們為你的面試準備選擇了 70 個你可能遇到的 shell 指令碼面試問題及解答。瞭解指令碼或至少知道基礎知識對系統管理員來說至關重要,它也有助於你在工作環境中自動完成很多工。在過去的幾年裡,我們注

shell指令碼程式設計(一)

(一)要求:1、在SHELL語句中加入必一要的註釋,以便以後閱讀和維護,註釋以”#”開頭。   2、對變數和函式命名時最好能使用有含義且容易理解的名字。  (二)內容:1、建立以下選單程式:  HOST: ********  &