條件測試,if語句,case語句

測試命令

格式1:test 條件表達式

格式2:[條件表達式]

test命令和 [    ] 相同,建議使用[   ] 
#方框中要空格
#用test可能會不小心定義變量

文件測試

常見的測試操作符含義
-d檢查文件是否存在且為目錄
-f檢查文件是否存在且為常規文件
-L測試是否為軟連接文件
-r測試當前用戶是否有讀取權限
-w測試當前用戶是否有寫入權限
-x測試當前用戶是否有執行權限
-e測試文件是否存在
屬性測試
-s FILE是否存在且非空
-t fd文件描述符是否在某終端已經打開
-N FILE文件自從上一次被讀取之后是否被修改過
-O FILE當前有效用戶是否為文件屬主
-G FILE當前有效用戶是否為文件屬組

整數比較

只能用于整數

整數1 操作符 整數2

常用操作符含義
-eq第一個數等于(Equal)第二個數
-ne第一個數不等于(Not Equal)第二個數
-gt第一個數大于(Greater Than)第二個數
-lt第一個數小于(Lesser Than)第二個數
-le第一個數小于或等于(Lesser or Equal)第二個數
-ge第一個數大于或等于(Greater or Equal)第二個數

字符串比較

操作符含義
=字符串內容相同
!=字符串內容不同,! 號表示相反的意思
-z字符串為空
-n字符是否存在
#!/bin/bash
read -p "請做出你的選擇:" choiceif [ $choice = "123" ]                                                                   
then
echo "a"
else
echo "cc"
fi[root@localhost data]# bash cs.sh
請做出你的選擇:123
a

邏輯測試

操作符含義
-a或&&邏輯與,全真才為真
-o邏輯或,一真即為真
i邏輯否

邏輯與&&

CMD1 && CMD2

同時滿足命令1 和命令2 的要求 才會返回正確 ,輸出命令2的結果

全真才為真 一假即為假

第一個CMD1結果為真 ,第二個CMD2必須要參與運算,才能得到最終的結果

第一個CMD1結果為假 ,總的結果必定為假,因此不需要執行CMD2

邏輯或||

CMD1 || CMD2

命令1滿足要求,直接輸出命令1的結果,不需要命令2參與

如果命令1不滿足要求,命令2滿足,會輸出命令2的結果

一真即為真 第一個CMD1結果為真 (1),總的結果必定為1,因此不需要執行CMD2 第一個CMD1結果為假 (0),第二個CMD2 必須要參與運算,才能得到最終的結果

組合應用

用法只有一個

CMD1 && CMD2 || CMD3

短路與必須在短路或前

if語句

單分支結構

#單分支格式if [ 判斷條件 ]
then ; echo " "
else
echo " "
fi
# if 和 fi要對應

多分支結構

#多分支格式if [ 判斷   ]
then 
echo "  "
elif[   ] #可以無限elif 
if
...fielse #以上條件都為假
echo "   "fi
# if 和 fi要對應
#!/bin/bash# 定義一個變量
read -p "請輸入你的年齡:" age  if [ $age -ge 18 ]
thenecho "你已經成年了!"
elseecho "你還未成年!"
fi
[root@localhost data]# bash nl.sh
請輸入你的年齡:18
你已經成年了!
[root@localhost data]# bash nl.sh
請輸入你的年齡:12
你還未成年!
#!/bin/bash
read -p "請輸入你的輸入分數(0-100):" numif [ $num -ge 85 -a $num -le 100 ]
then
echo "你真厲害"
elif [ $num -ge 70 -a $num -le 84 ]
then
echo "你很棒了"
elif [ $num -ge 0 -a $num -lt 70 ]
then
echo "你仍需努力"
else
echo "你輸錯了,重新輸"bash $0fi[root@localhost data]# bash gl.sh
請輸入你的輸入分數(0-100):100
你真厲害
[root@localhost data]# bash gl.sh
請輸入你的輸入分數(0-100):80
你很棒了
[root@localhost data]# bash gl.sh
請輸入你的輸入分數(0-100):60
你仍需努力
[root@localhost data]# bash gl.sh
請輸入你的輸入分數(0-100):120
你輸錯了,重新輸
請輸入你的輸入分數(0-100):0
你仍需努力

case語句

結構

case 變量名 in

case支持glob風格的通配符: * 任意長度任意字符

? 任意單個字符

[0-9] 指定范圍內的任意單個字符

| 或者,如: a|b

#!/bin/bash# 定義一個變量
read -p "這是什么水果:" fruitcase $fruit in"apple")echo "這是一個蘋果";;"orange")echo "這是一個橘子";;"banana")echo "這是一個香蕉";;*)echo "這是其他水果";;
esac[root@localhost data]# bash sg.sh 
這是什么水果:apple
這是一個蘋果
[root@localhost data]# bash sg.sh 
這是什么水果:1234
這是其他水果

echo命令

echo -n 表示不換行輸出

echo -e 表示輸出轉義符

選項作用
\r光標移動至行首,并且不換行
\s當前shell的名稱
\t插入TAB鍵
\n輸出換行
\f換行
\表示插入“\”本身的轉義
\b表示退格
\c抑制更多的輸出或不換行
echo -e "n\n\n\n\n\nw" | fdisk /dev/sdb
#自動磁盤分區

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

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

相關文章

解決json日期格式問題

解決json日期格式問題 1.json默認輸出時間格式 RequestMapping("/json3") public String json3() throws JsonProcessingException {ObjectMapper mapper new ObjectMapper();//創建時間一個對象,java.util.DateDate date new Date();//將我們的對象解…

Knife4j:快速入門

1. 概述 Knife4j是一個用于生成和展示API文檔的工具,同時它還提供了在線調試的功能,下圖是其工作界面。 * Knife4j有多個版本,最新版的Knife4j基于開源項目springdoc-openapi,這個開源項目的核心功能就是根據SpringBoot項目中的代…

uniapp uniCloud云開發

uniCloud概述 uniCloud 是 DCloud 聯合阿里云、騰訊云、支付寶云,為開發者提供的基于 serverless 模式和 js 編程的云開發平臺。 uniCloud 的 web控制臺地址:https://unicloud.dcloud.net.cn 文檔:https://doc.dcloud.net.cn/uniCloud/ un…

大模型應用-多模態和大模型是如何相互成就的

前言 如果單純的將大模型用來聊天,那就是low了。 而多模態賦予了大模型更多的現實價值,大模型則助力多模態變得更強大。 多模態 我們所處的是一個物理世界,不同事物之間模態多種多樣,即便是簡單的文本,按照語言&am…

【Docker0】網絡更改

目錄 1. 停止docker服務 2. 關閉docker默認橋接網絡接口 3. 從系統刪除docker0接口 4. 創建一個名為bridge0的新接口 5. 添加ip地址和子網掩碼 6. 啟用bridge0接口 7. (如果沒起來就執行該句) 8. 查看ip 1. 停止docker服務 sudo service docker…

c++用什么軟件編程?都有哪些?

c用什么軟件編程?都有哪些? C 作為一種高效、面向對象的編程語言,廣泛應用于軟件開發、游戲開發、嵌入式系統等領域。那么在進行 C 編程時,我們通常會使用哪些軟件呢?下面就來具體分析。 1. Visual Studio Visual Stu…

深入 SSH:解鎖本地轉發、遠程轉發和動態轉發的潛力

文章目錄 前言一、解鎖內部服務:SSH 本地轉發1.1 什么是 SSH 本地轉發1.2 本地轉發應用場景 二、打開外部訪問大門:SSH 遠程轉發2.1 什么是 SSH 遠程轉發2.2 遠程轉發應用場景 三、動態轉發:SSH 讓你擁有自己的 VPN3.1 什么是 SSH 動態轉發3.…

mysqldump全備份之后,如何只恢復一個庫或者一個表

在實際工作中,一個MySQL實例中可能有多個database。而我們備份時,通常采用完全備份,將所有database都備份到一個文件中。 但是,偶爾會遇到只恢復一個database或者一個表的情況。怎么解決呢? 一、利用全備恢復一個庫(database)的數據 案例:朋友在群里問, MySQL全庫備份…

memory動態內存管理學習之weak_ptr

此頭文件是動態內存管理庫的一部分。std::weak_ptr 是一種智能指針,它持有對被 std::shared_ptr 管理的對象的非擁有性(“弱”)引用。在訪問所引用的對象前必須先轉換為 std::shared_ptr。std::weak_ptr 用來表達臨時所有權的概念&#xff1a…

three.js實現雪花場景效果

點擊獲取雪花圖片素材 提取碼:lywa // 雪花效果 import * as THREE from "three" export function getsnowEffect(th) {console.log(th, th) // this 場景var that th// 創建一個BufferGeometry對象,用于存儲頂點數據 const geometry new THREE.Buffe…

Vim神兵:精通自定義補全規則

標題:Vim神兵:精通自定義補全規則 摘要 Vim作為Linux上最強大的文本編輯器之一,其補全功能可以極大提高編碼效率。本文將詳細探討如何在Vim中自定義補全規則,包括基本的補全設置、使用Vim腳本擴展補全功能,以及如何利…

大模型微調實戰之基于星火大模型的群聊對話分角色要素提取挑戰賽:Task01:跑通Baseline

目錄 0 背景1 環境配置1.1 下載包1.2 配置密鑰1.3 測試模型 2 解決問題2.1 獲取數據2.2 設計Prompt2.2 設計處理函數2.3 開始提取 附全流程代碼 0 背景 Datawhale AI夏令營第二期開始啦,去年有幸參與過第一期,收獲很多,這次也立馬參與了第二…

VMware ESXi 技術

目錄 一、VMware ESXi安裝 1. 在VMware WorkStation中創建一臺虛擬機 2. 進入VMware ESXi控制臺 3. 配置VMware ESXi網絡 二、使用Web網頁端登錄管理ESXi 1. 分配許可證密鑰(選做) 2. 管理ESXi 三、VMware ESXi控制臺 1. 創建虛擬機 2. 定制虛擬…

Webpack: 開發 PWA、Node、Electron 應用

概述 毋庸置疑,對前端開發者而言,當下正是一個日升月恒的美好時代!在久遠的過去,Web 頁面的開發技術鏈條非常原始而粗糙,那時候的 JavaScript 更多用來點綴 Web 頁面交互而不是用來構建一個完整的應用。直到 2009年5月…

LINUX操作系統:Mx Linux,用虛擬機VMware Workstation安裝體驗

需求說明: 操作系統目前流行有Windows、Linux、Unix等,中國人應該要知道國有操作系統,也要支持國產操作系統,為了更好支持國產操作系統,我們也要知己知彼,那么今天就來體驗一把操作系統Mx_Linux_23.2的安裝…

分享一個下載windows系統鏡像包的網站

下載各種操作系統(比如Windows、Linux、MacOS等)比較快的鏡像站點,我嘗試過這個不錯,提供了BT連接,可以用迅雷軟件下載,速度很快的! 入口地址:NEXT, ITELLYOU 1)打開網站…

[XYCTF新生賽2024] pwn

用了一周來復現crypto部分(不能算是復現,拿著 糖醋小雞塊的WP一點點學了下)。 兩天時間復現PWN部分。相對來說PWN比密碼這塊要簡單,不過ARM,MIPS懶得學了,跳過。 malloc_flag 題目先打開flag將建0x100的塊,然后把flag讀入再fre…

[深度學習] Transformer

Transformer是一種深度學習模型,最早由Vaswani等人在2017年的論文《Attention is All You Need》中提出。它最初用于自然語言處理(NLP)任務,但其架構的靈活性使其在許多其他領域也表現出色,如計算機視覺、時間序列分析…

MySQL高級-SQL優化- limit優化(覆蓋索引加子查詢)

文章目錄 0、limit 優化0.1、從表 tb_sku 中按照 id 列進行排序,然后跳過前 9000000 條記錄0.2、通過子查詢獲取按照 id 排序后的第 9000000 條開始的 10 條記錄的 id 值,然后在原表中根據這些 id 值獲取對應的完整記錄 1、上傳5個sql文件到 /root2、查看…

libctk shared library的設計及編碼實踐記錄

一、引言 1.1 <libctk>的由來 1.2 <libctk>的設計理論依據 1.3 <libctk>的設計理念 二、<libctk>的依賴庫 三、<libctk>的目錄說明 四、<libctk>的功能模塊及使用實例說明 4.1 日志模塊 4.2 mysql client模塊 4.3 ftp client模塊 4…