1. 程式人生 > >shell 指令碼 的 基本知識 (IV)

shell 指令碼 的 基本知識 (IV)

shell中常用的控制語句及指令碼的執行控制

一、for語句

for in

do

done

1)控制語句

exit 指令碼直接退出

break 退出當前迴圈;即退出for後面的還要執行

continue 提前結束迴圈內部的命令,但不終止迴圈

這裡寫圖片描述
這裡寫圖片描述

【{} 和 `` 的區別】
***`seq 1 2 5`*** **可以設計步長(2為步長),也可以引用變數** 

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

***{1..5}*** **必須是可變長字元**

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

<一、測試:顯示所有開機的主機>

這裡寫圖片描述

這裡的主機必須得在同一網段中,即可測試。

<二、資料庫的庫都以檔案顯示並儲存在/mnt/mysql_backup>

[root@localhost mnt]# yum install mariadb-server -y

準備工作,建立好westos庫和linux表
這裡寫圖片描述
這裡寫圖片描述
檢視
這裡寫圖片描述
開始寫指令碼測試
這裡寫圖片描述
這裡寫圖片描述

二、while語句

格式

while

do

done

  顯示當前時間在一行
[[email protected] mnt]# vim whlie.sh
[[email protected] mnt]# cat whlie.sh
#!/bin/bash
while true
do
        echo -n `uptime`
        echo -ne
"\r\r" sleep 1 done

這裡寫圖片描述

傳輸email
[root@localhost mnt]# mail
No mail for root
[root@localhost mnt]# echo hello world | mail -s warning root

這裡寫圖片描述

<三、當/下的容量達到80%,發警報email給root>

[root@localhost mnt]# vim mail_file.sh
[root@localhost mnt]# df -H
Filesystem          Size  Used Avail Use% Mounted on
/dev/vda1 11G 3.5G 7.4G 32% / devtmpfs 481M 0 481M 0% /dev tmpfs 497M 87k 497M 1% /dev/shm tmpfs 497M 14M 484M 3% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/mapper/vg0-vo 496M 2.5M 463M 1% /home [root@localhost mnt]# dd if=/dev/zero of=/bigfile bs=1M count=5000 ##擷取命令保證負載超過80%來進行實驗檢視 5000+0 records in 5000+0 records out 5242880000 bytes (5.2 GB) copied, 59.6522 s, 87.9 MB/s [root@localhost mnt]# df -H ##檢視負載已經超過80% Filesystem Size Used Avail Use% Mounted on /dev/vda1 11G 8.7G 2.1G 81% / devtmpfs 481M 0 481M 0% /dev tmpfs 497M 87k 497M 1% /dev/shm tmpfs 497M 14M 484M 3% /run tmpfs 497M 0 497M 0% /sys/fs/cgroup /dev/mapper/vg0-vo 496M 2.5M 463M 1% /home [root@localhost mnt]# sh mail_file.sh Your / will full !! Your / will full !! ^C

這裡寫圖片描述
檢視郵件每隔3秒就會以root使用者身份傳送一份郵件
這裡寫圖片描述

三、if語句

格式

if

then

elif

then

….

else

fi

<四、測試:編寫一個判斷檔案型別的指令碼>

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述

也可以用之前的函式,簡化指令碼,如下圖

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

四、case語句

格式

case

word1)

action1

;;

word2)

action2

;;

….

action_last

esac

<五、輸入 cat 顯示 dog ;輸入 dog 顯示 cat >

先用if語句來做

這裡寫圖片描述
這裡寫圖片描述

下面用case語句來實現

這裡寫圖片描述
這裡寫圖片描述

if語句與case語句的區別:

if語句中的條件判斷是從上到下順序依次判斷 case語句中的條件判斷是同步的;

字元匹配常用case語句,因為if語句對於越置後的條件判斷越慢,這樣效率很低.

五、expect語句

expect***是自動應答命令用於互動式命令的自動執行;*

安裝 yum install expect ,編寫問題,指令碼編寫,自動回答指令碼,幻術不一樣;

spawn***是expect中的監控程式,其執行後會監控命令提出的互動問題;*

send 傳送問題答案給互動命令

exp_continue 表示當問題不存在時繼續回答下面的問題

expect eof 表示問題回答完畢退出expect環境

interact 表示問題回答完畢留在互動介面

set NAME [ lindex $argv n ] 定義變數

1)先編寫一個問題指令碼,提出四個問題;

這裡寫圖片描述

2)編寫expect 自動互動回答指令碼;

這裡寫圖片描述

3)執行expect檢視;

這裡寫圖片描述

4)現在註釋掉一個問題,再次執行檢視;

這裡寫圖片描述
這裡寫圖片描述

<六、測試:自動ssh連線指令碼>

這裡寫圖片描述
這裡寫圖片描述

相關推薦

shell 指令碼基本知識 IV

shell中常用的控制語句及指令碼的執行控制 一、for語句 for in do done 1)控制語句 exit 指令碼直接退出 break 退出當前迴圈;即退出for後面的還要執行 continue 提前結束迴圈內部的命令,但不終止迴

SHELL指令碼------基礎知識|||

一、SHELL中的函式 1.語法方法1: 函式名( ) {     函式體     return n } 方法2: function 函式名( ) {     函式體    

SHELL指令碼------基礎知識||

一、Sed 行編輯器 一、sed: 1.用來操作純 ASCII 碼的文字 2.Sed 一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區中,稱之為“模式空間” 3.可以指定僅僅處理哪些行,Sed 符合模式條件的處理,不符合條件的不予處理 4.處理完成之後把緩衝區的內容送往螢幕 5.接著

C# 《一》基本知識 1

png 經歷 知識 通用 代碼 可執行 處理 環境 安全性 一、 .net Framework 編寫應用程序的過程 1、使用 .NET Framework 編寫應用程序,就是使用 .NET代碼庫編寫代碼(使用支持Framework的任何一種語言)。 2、為執

ActiveMQ基本知識

服務 serve cti log 功能 伸縮 class body app 1.ActiveMQ最主要的功能:實現JMS Provider,用來幫助實現高可用、高性能、可伸縮、易用和安全的企業級面向消息服務的系統。是一個異步的功能。 2.ActiveMQ特點:   完全支持

操作系統基本知識

兩個 code 緩沖 inline 內存管理 中斷 字節 核心 結束 計算機系統體系結構: 單處理器的計算機系統,它只有一個general purpose 的處理器,它有一個CPU來執行通用的指令集, 另外,裏面也包括一些專用的控制器(處理器),比如控制硬盤、網卡、

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

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

阿里雲伺服器基本知識

最近用 js 全棧玩小程式,玩的第一個流程便是要配置伺服器,而且是要繫結域名的伺服器。好吧,磕磕碰碰的,終於可以玩了。 寫著寫著,後臺介面便用上了,這時候伺服器知識又要上場了。心塞,硬著頭皮~ (在這裡就不說明怎樣購買以及伺服器搭建了,百度一大堆~還有先謝公司裡的蘇工和陳工幫忙,計算機知識也

GAN網路的一些基本知識雜記

【時間】2018.10.08 【題目】GAN網路的一些基本知識(雜記) 【說明】本文的主要內容來自https://blog.csdn.net/xg123321123/article/details/78034859,對原博文進行了刪減和修改,主要是其簡化版本,想要了解詳情請閱讀原文,如若侵權

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

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

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

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

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

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

MongoDB基本知識補充

列表切片 最大 產品 collect back inf 事務 fig 數據節點 NoSQL: Not only SQL 非關系型數據庫,不是一種特定的技術,分類多種 而關系型數據庫,就是一種特定的技術 大數據問題:BigData

資料結構的基本知識

1.資料結構的基本概念 資料結構是一門研究非數值計算的程式設計問題中的操作物件,以及它們之間的關係和操作等相關問題的學科。 資料是人們利用文字元號、數字符號以及其他規定的符號對現實世界的事物及其活動所做的抽象描述。換言之,資料是資訊的載體,是客觀事物

1 TCL指令碼基本語法概要

TCL常用基本語法 一個TCL指令碼可以包含一個或多個命令。命令之間必須用換行符或分號隔開。 第一個單詞代表命令名,另外的單詞則是這個命令的引數,用空格或TAB鍵隔開。 變數置換$。 命令置換[] 反斜槓置換\ ,例如set msg multiple\ space ,如果沒有\則有報

數字影象處理基本知識

一、影象訊號的數學表示 1、訊號的分類 訊號的分類   連續的模擬訊號,經過取樣轉化為取樣訊號,最後要根據A/D變換量化才能處理為數字訊號。 模擬訊號和數字訊號的轉換  這時,便會出現一個問題:訊號形式的變化,會不會引起訊號所表示的資訊的變化呢?      

shell指令碼中棧stack簡單封裝

操作命令 init_stack name # 初始化 push_stack name data # 進棧操作 pop_stack name # 出棧操作 print_stack name # 輸出棧中內容 實際程式碼 function i

機器學習基本知識:邏輯迴歸

一、分類和迴歸         迴歸(Regression)和分類(Classification)是機器學習中的兩大類問題,迴歸問題的輸出是連續的,而分類的輸出則是代表不同類別的有限個離散數值。        

Linux命令列與Shell指令碼程式設計大全

一、建立函式 1.基本的指令碼函式 1.1 建立函式 function name { commands} 1.2 使用函式 在行中指定函式名就行了 ## 建立函式,注意函式名和大括號中間有空格,不然會報錯 function func1 { echo "

Tomcat基本知識

頂層架構 先上一張Tomcat的頂層結構圖(圖A),如下: Tomcat中最頂層的容器是Server,代表著整個伺服器,從上圖中可以看出,一個Server可以包含至少一個Service,用於具體提供服務。 Service主要包含兩個部分:Connector和Cont