shell指令碼的運用

2021-08-19 01:27:46 字數 2283 閱讀 6161

一、編寫簡單的指令碼

shell指令碼的命令工作方式有兩種:互動式和批處理。

➢ 互動式(interactive):使用者每輸入一條命令就立即執行。

➢ 批處理(batch):由使用者事先編寫好乙個完整的 shell 指令碼,shell 會一次性執行指令碼

中諸多的命令。

首先介紹乙個簡單的shell指令碼例子(雖然很小,但所有的大的程式都是由小的模組堆積起來的,程式設計師一定要懂得一種指令碼的書寫

[root@linuxprobe ~]# vim example.sh

#!/bin/bash

#for example by linuxprobe.com

pwdls -al

linux中的檔名稱可以任意,但避免人們看到的是普通檔案,就在後面加上.sh字尾、

執行上面的步驟可以看到結果。

[root@linuxprobe ~]# bash example.sh

/root/desktop

total 8

drwxr-xr-x. 2 root root 23 jul 23 17:31 .

dr-xr-x---. 14 root root 4096 jul 23 17:31 ..

二、可以接受使用者的引數

像上面這樣的僅僅實現簡單的命令控制的指令碼,這不能足以體現的linux的強大之處。shell指令碼早已內設用於接受使用者的引數變數之間可以使用空格間隔。例如$0 對應的是當前 shell 指令碼程式的名稱,$#對應的是總共有幾個引數,$*對應的是所有位置的引數值,$?對應的是顯示上一次命令的執行返回值,而$1、$2、$3……則分別對應著第 n 個位置的引數值,下圖:

通過引用上面的引數看看真實的效果:

[root@linuxprobe ~]# vim example.sh

#!/bin/bash

echo "當前指令碼名稱為$0"

echo "總共有$#個引數,分別是$*。"

echo "第 1 個引數為$1,第 5 個為$5。"

[root@linuxprobe ~]# sh example.sh one two three four five six

當前指令碼名稱為 example.sh

總共有 6 個引數,分別是 one two three four five six。

第 1 個引數為 one,第 5 個為 five。

三、判斷使用者的引數

學習到這裡,我們應該要進入新的高度,這裡講得判斷使用者的引數,舉個例子:在前面學習到,mkdir命令是判斷使用者指定的資料夾名稱是不是存在,如果存在就會出現報錯。反之自動建立。shell指令碼中的條件測試語法可以判斷是否成立,若成立,返回數字0,否則返回其他隨機的數。

測試語法的執行格式:(ps:條件表示式兩邊均有乙個空格。)測試語句格式:【 條件表示式 】

按照測試物件來劃分,條件測試語句可以分為 4 種:

➢ 檔案測試語句;

➢ 邏輯測試語句;

➢ 整數值比較語句;

➢ 字串比較語句。

檔案測試即使用指定條件來判斷檔案是否存在或許可權是否滿足等情況的運算子,具體的引數如表 4-3 所示:

下面使用檔案測試語句來判斷/etc/fstab 是否為乙個目錄型別的檔案,然後通過 shell 直譯器的內設$?變數顯示上一條命令執行後的返回值。如果返回值為 0,則目錄存在;如果返回值為非零的值,則意味著目錄不存在:

[root@linuxprobe ~]# [ -d /etc/fstab ]

[root@linuxprobe ~]# echo $?

1再使用檔案測試語句來判斷/etc/fstab 是否為一般檔案,如果返回值為 0,則代表檔案存在,且為一般檔案:

[root@linuxprobe ~]# [ -f /etc/fstab ]

[root@linuxprobe ~]# echo $?

邏輯語句用於對測試結果進行邏輯分析,根據測試結果可實現不同的效果。例如在 shell

終端中邏輯「與」的運算符號是&&,它表示當前面的命令執行成功後才會執行它後面的命令,

因此可以用來判斷/dev/cdrom 檔案是否存在,若存在則輸出 exist 字樣

[root@linuxprobe ~]# [ -e /dev/cdrom ] && echo "exist"

exist

shell與awk的指令碼運用(二)

話不多說,老闆,上硬菜 bin bash shell指令碼宣告 a ls log 將當前目錄下的log開頭的日誌檔名稱存入變數a for i in a 開始迴圈變數a do 進入迴圈 echo i 輸出檔名 b cat i awk f 定義變數b為檔案中每一行最後乙個以 為分隔符的引數和行號,輸出來...

shell指令碼規範與變數運用 張俊

前言隨著linux系統在企業中應用的越來越多,伺服器自動化管理也變得越來越重要。linux伺服器自動化維護工作中,除了計畫任務的設定外,shell指令碼的應用也是非常重要的一部分。什麼是shell指令碼shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便...

shell指令碼 訪問shell指令碼的引數

所謂的位置引數 positional parameters 指的也就是shell指令碼的命令列引數 command line arguments 在shell函式裡,它們同時也可以是函式的引數。各引數都由整數來命名。由於歷史原因,當它超過9時,就應該用大括號把數字框起來 echo first arg...