指令碼程式設計語言與編譯型語言:
指令碼程式設計語言:(Bash)
指令碼程式設計語言通常是解釋型(interpreted),主要由解譯器(interpreter)讀入程式碼,並將其轉換成內部的形式加以執行。
優點:
能夠輕易處理檔案與目錄之類的對象。
缺點:
運行效率通常不如編譯型語言
編譯型語言:(C、C++、Java、Fortran、Ada、Pascal)
編譯型語言多半運作於底層,所處理的是位元組、整數、浮點數或其它及其機器層經的對象。
SHELL指令碼的基本文法格式:
指令碼必須以#!開頭:(# cat /etc/shells)
例如#!/bin/bash(解譯器)
# 其中間可以添加一些注釋資訊,例如指令碼的使用方法、指令碼的功能、建立日期、作者等相關資訊
然後賦予指令碼具有執行許可權,# chmod +x scripts.sh
執行則使用./scripts.sh ##也可以將此指令碼的路徑添加到PATH變數中,以後直接使用指令碼名稱直接運行。
指令碼的測試載入器bash:
-n:檢查指令碼是否有語法錯誤,有則顯示錯誤資訊,否則無資訊(沒有訊息才是最好的訊息)
-x:檢查指令碼在執行中的詳細過程(排錯時,經常會用到)
exit:退出指令碼(其數值為0-255)
如果指令碼沒有明確定義退出碼,那麼在執行指令碼結束前的退出碼為此指令碼的退出碼。
# echo $? ##查看上一個命令執行結果所顯示的狀態代碼
SHELL指令碼的邏輯關係總結:
邏輯與:符號為&&:
如果其中一個為假,則結果一定為假
如果第一個條件結果為假,則第二個條件不用再判斷,最終結果已顯示
如果第一個條件結果為真,則第二個條件必須判斷
範例:
# useradd redhat && echo "redhat" | passwd --stdin redhat
解說:如果useradd redhat執行成功,則繼續執行下一條命令,否則終止。
邏輯或||:
如果其中一個條件結果為真,則結果一定為真,不用檢查後面的語句
如果其中一個條件結果為假,則檢查下一個條件陳述式
範例:
# id redhat || useradd redhat
解說:如果redhat使用者存在,就顯示redhat使用者相關資訊,否則添加此賬戶。
邏輯與和邏輯或聯合使用範例:
# id redhat && echo “redhat already existing“ || useradd redhat
解說:如果redhat使用者存在,則顯示redhat使用者已存在,否則添加此賬戶。