shell基本指令碼命令

2022-07-29 19:57:14 字數 2459 閱讀 7971

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 ...