shell是乙個命令直譯器,它在作業系統的最外層,負責直接與使用者對話,把使用者的輸入解釋給作業系統,並處理各種各樣的作業系統的輸出結果,輸出螢幕返回給使用者
shell指令碼必須要素:
① 指令碼檔案名字必須以.sh結尾。
② 宣告:開啟指令碼的第一句話必須寫上#!/bin/bash(通常#後面的是不會被解析的,但是加上!就是告訴作業系統用什麼直譯器去解釋)。
如何執行乙個指令碼:
① 以命令方式執行指令碼
bash yunjisuan.sh
sh yunjisuan.sh
② 給指令碼可執行許可權x,然後以指令碼的絕對路徑方式執行指令碼
/root/benet/yunjisuan.sh
指令碼裡面出現的必須是都是免互動的。如passwd –stdin test1
基本指令碼命令:
一、邏輯判斷
指令碼理論的命令是死的,不會像人一樣通過眼睛判斷是否可執行。因此,我們需要對指令碼的命令進行是否可行的邏輯判斷(真/假),判斷後在進行命令的執行。
(1)檔案測試
通過test –d(f) 來判斷目標是目錄還是檔案
指令碼裡:test –d /root && cd /root && pwd
-e 判斷目標是否存在
-r 判斷是否有讀許可權
-w 判斷是否有寫許可權
-x 判斷是否有可執行許可權
-z 判斷字串是不是空(空格為不空)
## 我們可以通過特殊方式判斷字串是否為空
(了解)$ *****》輸出變數的字元位數如果是0,代表變數為空
判斷變數的字元個數:
(2)通過中括號(邏輯判斷符號)來判斷目標是否是目錄還是檔案,還能進行字串判斷以及數字大小的比對。
[ -d /root/benet ] 判斷是否為目錄
[ -f /root/benet/yunjisuan.sh ] 判斷是否為檔案
[ $變數 == 「」「字串」 ] 進行字串是否向相等判斷
[ $變數 – gt(lt,le,ge,eq) 數字 ] 進行數字大小判斷
-gt (great than)代表大於
-lt (less than)代表小於
-eq 代表等於
-ge 是大於等於
-le 是小於等於
== 是等號,x == 3,判斷
= 是賦值(賦值語句,數字可以不加「」,但是字串加「」)
結論:以上判斷均可通過$?進行成功與否的取值,0代表判斷為真,非0代表判斷為假。
(3)關於邏輯與&& 邏輯或||
&&符號的左邊為真(0),方可執行右邊,否則右邊不執行
|| 符號左邊為假(非0),方可執行右邊,否則右邊不執行
注:變數名只能由字母、數字、下劃線組成,且以字母開頭。邏輯與可以連線很多,用邏輯或(在最右邊)就不要在用邏輯與了,造成邏輯混亂
shell指令碼的意義:
通過命令列解析的方式幫我們自動去執行我們設定好的**;假如我們把指令碼掛到定時任務裡,那就是自動的在某個沒有人的時間裡自動觸發幹活程式。
二、關於指令碼互動式輸出模式:
(1)我們可以通過read命令進行互動式輸入
例如:read 變數 或者 read –p 「文字提示」 變數
三、命令列傳參
$# 代表傳給指令碼的引數的個數
$* 代表橫向羅列引數
$0 檔案的執行路徑
$1..$n 對應傳入的不同的引數
$@ 傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,與 $* 稍有不同
注:但是當$@和$*被雙引號(" ")包含時,"$*" 會將所有的引數作為乙個整體,以"$1 $2 … $n"的形式輸出所有引數;"$@" 會將各個引數分開,以"$1" "$2" … "$n" 的形式輸出所有引數。
Shell指令碼基本命令
shell指令碼是包含一系列命令的文字檔案 用於重複性操作 事務批處理 自動化運維 定時任務執行 為乙個約定的標記 放到linux裡先授權,後執行 1.列印 變數列印 bin bash echo hello world name zs echo hello,echo 在單引號裡無法取到變數,雙引號能...
Shell指令碼基本命令2
1.echo輸出 語法 echo string 用途 產生shell指令碼的輸出 echo的轉義序列 a 警示字元,通常是asii的bel字元 b 退格 c 輸出中忽略最後的換行字元,這個引數之後的任何字元,包括接下來的引數,都會被忽略掉 f 清楚螢幕 n 換行 r 回車 t 水平製表符 v 垂直製...
shell指令碼 命令
命令連線符 表示不管前面是否執行成功都要執行 表示前面執行成功才執行後面 表示前面執行失敗才執行後面 read命令 read 選項 值 read p 提示語句 n 字元個數 t 時間秒 s 不顯示 運算子 expr 3 2 結果賦值 sum expr 3 2 或者 sum 3 2 乘法expr 3 ...