流程控制語句(bash)

1.if控制語句 ? if then fi ? ? if then else fi ? ?if then elif then elif then ······ else fi
if ?條件表達式
then 命令序列(滿足條件才執行) #注意,如果if與then(elif與then)寫在同一行,要用;隔開) ?
fi

if ?條件表達式;then?
命令序列
fi ?

if ?條件表達式
then ?命令序列1(條件滿足)
else ?命令序列1(條件不滿足)
fi

if ?條件表達式1
then ?命令序列1
elif 條件表達式2
then ?命令序列2
······
else ?命令序列(以上條件均不滿足)
fi

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# ex.sh
read -p "Enter your score(0-100): " GRADE ? ? ?# read命令
if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ;then?
echo "$GRADE is Excellent"
elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ]
then echo "$GRADE is pass"
elif [ $GRADE -gt 100 ]
then echo "$GRADE is error"
elif [ $GRADE -lt 0 ]
then echo "$GRADE is error"
else
echo "$GRADE is fail"
fi ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bash ex.sh ? ?sh ex.sh ? ?./ex.sh

2.for控制語句
for 變量名 in 控制列表 ?
do
? ?命令序列
done

# vim name.txt ?#每行只有一個用戶
andy
barry
carl
sjd

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#user.sh
read -p "Enter the users password: " PASSWD ?#讀取密碼,所有用戶的密碼設置相同?
for NAME in `cat name.txt`
do
? ?id $NAME &> /dev/null
? ?if [ $? -eq 0 ]
? ?then?
? ? ? echo "Already exists"
? ?else?
? ? ? useradd $NAME &> /dev/null
? ? ? echo "$PASSWD" | passwd --stdin $NAME &> /dev/null
? ? ? if [ $? -eq 0 ]
? ? ? then?
? ? ? ? ?echo "$NAME, create success"
? ? ? else?
? ? ? ? ?echo "$NAME, create failure"
? ? ? fi
? ?fi
done ? ? ? ?bash user.sh ? tail -n 4 /etc/passwd ?查看新建用戶信息 ?for NAME in `cat name.txt` ?等
價于 for NAME in $(cat name.txt) ? 或者: EH= $(cat name.txt) ? for NAME in $EH

3.while控制語句
while 條件表達式
do
? ?命令序列
done

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#guess.sh
PRICE=$(expr $RANDOM % 1000) ? ? #或者 ?PRICE=`expr $RANDOM % 1000`
TIMES=0
echo "商品實際價格為0~999之間,猜猜看是多少?"
while true
do
? ?read -p "please input the value that you guess: " GU
? ?let TIMES++
? ?if [ $PRICE -eq $GU ]
? ?then echo "congratulations! your guess is accurate which is $PRICE"
? ? ? ? echo "the times that you guess is $TIMES"
? ? ? ? exit 0
? ?elif [ $GU -gt $PRICE ]
? ?then echo "your guess is bigger"
? ?else
? ? ? ? echo "your guess is lower"
? ?fi
done ? ? ? ?bash guess.sh ? ? ? ? $RANDOM為環境變量,系統隨機產生一個隨機數(范圍為0~32767)。使用
expr命令取得后面表達式的結果。exit 0 跳出while循環。

4.case控制語句
case 變量值 in
模式1)
? ?命令序列1
;;
模式2)
? ?命令序列2
;;
······
*)
? ?默認命令序列
esac
當變量指都不符合以上的模式時,則執行默認命令序列。

#!/bin/bash ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#exw.sh
read -p "please input a character: " KU
case $KU in
[a-z])
? ?echo "你輸入的是字母!"
;;
[0-9])
? ?echo "你輸入的是數字!"
;;
*)
? ?echo "你輸入的是其它字符!"
esac ? ? ? [a-z] ?可以匹配所有大小寫字母,并不僅僅只是小寫字母,與上面矛盾(經試驗證明)

5.計劃任務服務程序
在指定的時間段自動啟用或停止某些服務或命令,從而實現運維的自動化。
一次性計劃任務:如今晚11:30開啟網站服務 ? at 時間 ? 設置一次性計劃任務 ? ?at -l 查看還未執行的一次性計劃任務 ? atrm 任務序號 刪除對應的還未執行的一次性計劃任務 ? ?# at 11:30 ? ?systemctl restart httpd ? Ctrl+D組合鍵來結束計劃任務的編寫 ? 這是采用交互的方式來實現一次性計劃任務,可以利用管道符來直接實現: echo "systemctl restart httpd" | at 11:30 ? ?即可 ? ?然后就可以用at -l命令查看

長期性計劃任務:如每周一3:25分把/home/luciusvorenus目錄打包備份為backup.tar.gz? ? ? ? ? crontab -e 創建、編輯計劃任務書 ? crontab -l 查看計劃任務 ? 注意:每一行只能寫一條計劃任務,且命令必須采用絕對路徑的方式書寫,如:/uer/bin/rm ? ? 可用whereis 或which命令查看 ?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/385470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/385470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/385470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用戶身份與文件的權限(普通權限、特殊權限、隱藏權限和文件控制列表ACL)

用戶身份 root用戶是存在于所有類UNIX操作系統中的超級用戶,它擁有最高的系統所有權。root用戶的用戶身份號碼UID為0,UID相當于用戶的身份證號碼一樣,具有唯一性。管理員用戶(超級用戶)UID為0;系統用戶UID為…

存儲結構與磁盤劃分

文件系統層次化標準(FHS,file system hierarchy standard) 在windows操作系統中,要找到一個文件需要先進入該文件所在的磁盤分區(如C:\等 C:\ZSX\zsx.txt),然后在進入該分區下的一個具…

Linux中常用文件的含義

在Linux中配置了服務文件后,需要重啟該服務,配置信息才會生效。 /etc/passwd 保存了系統中所有用戶的信息,一旦用戶的登陸終端設置為/sbin/nologin,則不再允許登錄到系統 /etc/shadow與/etc/passwd均為用戶信息文件 /…

64. 最小路徑和

給定一個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。 說明:每次只能向下或者向右移動一步。 示例: 輸入: [[1,3,1],[1,5,1],[4,2,1] ] 輸出: 7 解釋: 因為路徑 1→3→1→1→1 的總和最小。…

Linux本地yum源配置以及使用yum源安裝各種應用程序

將軟件包傳送到Linux中后,掛載,然后配置yum軟件倉庫,最后就可以使用yum來安裝相應的應用程序了。假設掛載目錄為/tmp/ruanjianbao,則下面說明配置本地yum倉庫的過程: (1)cd /etc/yum.repos.d/…

gcc與g++編譯器

首先在Linux(RHEL7.0)上安裝gcc:yum install gcc gcc-c -y 其中gcc-c是為了能夠編譯c源代碼,即g。 gcc為Linux C/C下重要的編譯環境,是GUN項目中符合ANSIC標準的編譯系統, gcc可以編譯C、C、Objective-C、Java、Fortran、Pascal…

【Leetcode | 49】230. 二叉搜索樹中第K小的元素

給定一個二叉搜索樹,編寫一個函數 kthSmallest 來查找其中第 k 個最小的元素。 說明: 你可以假設 k 總是有效的,1 ≤ k ≤ 二叉搜索樹元素個數。 示例 1: 輸入: root [3,1,4,null,2], k 1 3 / \ 1 4 \ 2 輸出: 1 示例 2: 輸入…

gcc編譯器的整個工作過程

gcc hello.c ./a.out 或者 gcc hello.c -o hello ./hello ./表示執行當前目錄下的可執行程序或腳本程序。 首先gcc需要調用預處理程序cpp,由它負責展開在源文件中定義的宏,并向其中插入“#include”語句所包含的內容;接著gcc會調用…

宏定義對調試代碼的作用

以如下代碼為例&#xff1a; //head.h #ifndef __HEAD_H__ #define __HEAD_H__#define NUM1 10 #define NUM2 20 #endif//sum.c #include <stdio.h> //直接在標準庫中查找 #include "head.h" //先在工作目錄中查找&#xff…

【第15章】多重繼承

1. 虛基類介紹 多繼承時很容易產生命名沖突&#xff0c;即使我們很小心地將所有類中的成員變量和成員函數都命名為不同的名字&#xff0c;命名沖突依然有可能發生&#xff0c;比如非常經典的菱形繼承層次。如下圖所示&#xff1a; 類A派生出類B和類C&#xff0c;類D繼承自類B和…

gcc編譯器與g++編譯器的區別

gcc與g編譯器的程序文件分別為&#xff1a;/usr/bin/g和/usr/bin/gcc。 gcc 和 GCC 是兩個不同的東西&#xff0c;GCC:GNU Compiler Collection(GUN 編譯器集合)&#xff0c;它可以編譯C、C、JAV、Fortran、Pascal、Object-C、Ada等語言。gcc是GCC中的GUN C Compiler&#xff0…

1. 排序算法

一、概述 假定在待排序的記錄序列中&#xff0c;存在多個具有相同的關鍵字的記錄&#xff0c;若經過排序&#xff0c;這些記錄的相對次序保持不變&#xff0c;即在原序列中&#xff0c;r[i]r[j]&#xff0c;且r[i]在r[j]之前&#xff0c;而在排序后的序列中&#xff0c;r[i]仍…

1036. 跟奧巴馬一起編程(15)

美國總統奧巴馬不僅呼吁所有人都學習編程&#xff0c;甚至以身作則編寫代碼&#xff0c;成為美國歷史上首位編寫計算機代碼的總統。2014年底&#xff0c;為慶祝“計算機科學教育周”正式啟動&#xff0c;奧巴馬編寫了很簡單的計算機代碼&#xff1a;在屏幕上畫一個正方形。現在…

庫文件與頭文件

首先說明庫文件與頭文件在gcc中的具體使用方法&#xff0c;然后說明兩者的區別與聯系。 庫文件即庫函數&#xff0c;如printf和scanf函數。以libgtdf.so庫文件為例&#xff08;庫文件在命名時都以lib開頭&#xff0c;因此使用-l選項去鏈接指定的庫文件時可以省略lib三個字母&am…

gcc的常用參數

-c 編譯成目標文件.o&#xff08;只編譯不鏈接&#xff09; gcc -c hello.s -o hello.o -o 指出輸出文件名&#xff0c;輸出文件名跟在-o后面。如果不使用這一選項&#xff0c;則缺省的輸出文件名為a.out。gcc hello.c -o hello.exe&#xff08;在Linux中該項后綴名無要求&a…

1027. 打印沙漏(20)

本題要求你寫個程序把給定的符號打印成沙漏的形狀。例如給定17個“*”&#xff0c;要求按下列格式打印 ************ *****所謂“沙漏形狀”&#xff0c;是指每行輸出奇數個符號&#xff1b;各行符號中心對齊&#xff1b;相鄰兩行符號數差2&#xff1b;符號數先從大到小順序遞減…

【C++ Priemr | 15】構造函數與拷貝控制

繼承的構造函數 1. 簡介&#xff1a; 子類為完成基類初始化&#xff0c;在C11之前&#xff0c;需要在初始化列表調用基類的構造函數&#xff0c;從而完成構造函數的傳遞。如果基類擁有多個構造函數&#xff0c;那么子類也需要實現多個與基類構造函數對應的構造函數。 class …

C命令行參數

C命令行參數的作用是在執行程序時&#xff0c;可以將命令行的參數傳值給C程序內部&#xff0c;這樣就可以從外部控制程序&#xff0c;而不是在代碼內對這些值進行硬編碼。命令行參數是使用main函數來處理的&#xff0c;argc是指參數的個數&#xff0c;為int類型&#xff1b;arg…

剖析數組名、函數名(不是指針常量,更不是指針)

對于一個數組&#xff0c;如 int a[4]; 如果只是給出數組名a&#xff0c;編譯器不知道該取該數組的第幾個元素&#xff0c;因此編譯器不會自動取值&#xff0c;而是返回該數組的首地址&#xff08;第一個元素的地址&#xff09;。其實&#xff0c;數組名a就是數組本身&#xf…

【C++ Priemr | 15】面向對象程序設計

類型準換與繼承 為了支持c的多態性&#xff0c;才用了動態綁定和靜態綁定。 需要理解四個名詞&#xff1a; 對象的靜態類型&#xff1a;對象在聲明時采用的類型&#xff0c;是在編譯期確定的。對象的動態類型&#xff1a;目前所指對象的類型&#xff0c;是在運行期決定的。對…