case和字符串操作

使用if選擇結構

if [];then

elif [];then #注意這個地方,java是else if

else ;

fi

使用for循環結構

使用for循環,語法結構如下所示:
for 變量名 in 值1 值2 值3    #值的數量決定循環任務的次數
do命令序列
done
#循環輸出1到10
for i in {1..10}     #注意的是花括號里面不加空格
doecho $i;
done
#從文件中獲取數據,進行批量的ping,或者用戶創建
# 創建存儲信息的文件,也是數據來源
vim /sh/ip.txt
192.168.88.2
192.168.88.254
192.168.88.3
192.168.88.240
#使用$(cat 路徑)獲取數據
for i in $( cat /sh/ip.txt )
doping -c 1 $i &> /dev/null;if [ $? == 1  ];thenecho $i"可以ping通";else    echo $i"bu可以ping通";fi
done

使用while循環結構

寫法特點適用場景
while :簡潔,無限循環,需手動退出。簡單守護進程、持續監控
while true功能相同,但語義更明確(推薦)。while :
while [條件]條件滿足時循環,可自動終止。需要動態終止條件的場景
使用while循環,語法結構如下所示:
while 條件測試    #根據條件的結果決定是否要執行任務,條件測試成功的話就執行,如果失敗立刻結束循環
do命令序列
done
num=$[RANDOM%10+1] 是一種生成 1 到 10 之間的隨機整數 的方法。
num=$[RANDOM%12+1]
q=1
while [ $q -eq 1 ];
doread -p "shuru[1-12]:" nub;if [ $nub -gt $num ];thenecho "pianda";elif  [ $num -gt $nub  ];thenecho "pianxiao";else  echo "daduil";q=0;fi
done

注意:使用[]一定要記得使用空格

中斷及退出

關鍵字作用范圍功能描述典型場景示例代碼
break循環結構(for/while/until立即退出當前循環,后續迭代不再執行。提前終止循環(如找到目標后退出)。bash<br>for i in {1..5}; do<br> [ "$i" -eq 3 ] && break<br> echo "$i"<br>done<br># 輸出: 1 2<br>
continue循環結構(for/while/until跳過當前迭代,直接進入下一次循環。跳過特定條件下的處理(如忽略無效輸入)。bash<br>for i in {1..5}; do<br> [ "$i" -eq 3 ] && continue<br> echo "$i"<br>done<br># 輸出: 1 2 4 5<br>
exit整個腳本或函數立即終止腳本或函數,并返回退出狀態碼(默認 0,非零表示錯誤)。發生致命錯誤時終止腳本,或從函數返回狀態碼。bash<br>if [ ! -f "file.txt" ]; then<br> echo "文件不存在"<br> exit 1<br>fi<br># 若文件不存在,腳本終止并返回狀態碼 1<br>
# 編寫持續創建用戶腳本sum.sh
q=0;
while :
doread -p "請輸入用戶名,輸入0退出:" usern;  if [ $usern == 0 ];thenbreak;                            #break跳出循環,exit結束正在執行的進程elif  useradd "$usern";then     q=$(($q+1)); continue;else break;fidone
echo $q;
工具語法格式四則運算示例求模運算示例適用場景POSIX 兼容性推薦度
$(( ))$((表達式))echo $((a + b)) echo $((a * b))echo $((a % b))通用算術運算(推薦),支持所有標準運算符(+, -, *, /, % 等)。? 完全兼容?????
$[ ]$[表達式]echo $[a + b] echo $[a * b]echo $[a % b]舊版 Bash 語法(已過時),功能與 $(( )) 相同,但非 POSIX 標準。? 不兼容(部分 Shell 不支持)? 不推薦
letlet "表達式"let "result=a+b" let "result=a*b"let "result=a%b"變量賦值或復雜運算(如 i++),但無法直接輸出結果,需結合 echo 或變量。? 完全兼容???

基于case分支編寫腳本

case分支屬于匹配執行的方式,它針對指定的變量預先設置一個可能的取值,判斷該變量的實際取值是否與預設的某一個值相匹配,如果匹配上了,就執行相應的一組操作,如果沒有任何值能夠匹配,就執行預先設置的默認操作。case分支的語法結構如下所示:
case 變量 in
模式1)命令序列1 ;;
模式2)命令序列2 ;;.. ..
*)默認命令序列
esac
case $1 in
-f)touch $2;;
-d)mkdir $2;;
-r)remove -f $2;;
*)echo "-d,-f,-r";
esac

使用Shell函數

在Shell腳本中,將一些需重復使用的操作,定義為公共的語句塊,即可稱為函數。通過使用函數,可以使腳本代碼更加簡潔,增強易讀性,提高Shell腳本的執行效率
1)函數的定義方法
格式1:
function 函數名 {命令序列.. ..
}格式2:
函數名() {命令序列.. ..
}2)函數的調用直接使用“函數名”的形式調用,如果該函數能夠處理位置參數,則可以使用“函數名 參數1 參數2 .. ..”的形式調用。注意:函數的定義語句必須出現在調用之前,否則無法執行。3) 測試語法格式[root@sv7 ~]# a() {            #定義函數echo abcecho xyz}[root@sv7 ~]# a             #調用函數

字符串處理

字符串截取的用法: ${變量名:起始位置:長度}
起始位置從0開始計數
[root@nsd ~]# echo ${phone:0:3} 
121字符串替換的兩種用法:
1、只替換第一個匹配結果:${變量名/old/new}
2、替換全部匹配結果:${變量名//old/new}[root@nsd ~]# echo ${phone/2/*} 
1*12121212121
[root@nsd ~]# echo ${phone//2/*} 
1*1*1*1*1*1*1
[root@nsd ~]# echo $phone         ==注:替換數據不會改變原始數據的值==
1212121212121   字符串掐頭去尾:
1、從左向右,最短匹配刪除:${變量名#*關鍵詞}
2、從左向右,最長匹配刪除:${變量名##*關鍵詞}
3、從右向左,最短匹配刪除:${變量名%關鍵詞*}
3、從右向左,最長匹配刪除:${變量名%%關鍵詞*}
[root@nsd ~]# echo ${n##* }
/mnt/dvd
[root@nsd ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0          11:0    1 10.5G  0 rom  /mnt/dvd

字符串初值的處理

可以通過${var:-初值}判斷變量是否存在,決定變量的初始值。
# 編寫一個腳本可以創建用戶,密碼可以自定義也可以使用默認值123456
read -p "user:" usert
useradd $usert
read -p "password:" pas
echo ${pas:-123} | passwd --stdin  $usert

cut

示例:截取以空格分隔的字符串的第二部分

echo “hello world linux” | cut -d’ ’ -f2

輸出:world

-d' ':指定分隔符為空格(可替換為其他字符如 -d':')。   
-f2:截取第二個字段。  1開始

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

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

相關文章

Stm32 燒錄 Micropython

目錄 前言 準備工作 開始操作 問題回顧 后記 前言 去年曾經嘗試Pico制作openmv固件&#xff0c;由于知識儲備不夠最后失敗了&#xff0c;留了一個大坑&#xff0c;有了前幾天的基礎&#xff0c;慢慢補齊知識&#xff0c;最近這一周一直在學習如何編譯Stm固件并燒錄到單片機…

鹽化行業數字化轉型規劃詳細方案(124頁PPT)(文末有下載方式)

資料解讀&#xff1a;《鹽化行業數字化轉型規劃詳細解決方案》 詳細資料請看本解讀文章的最后內容。 該文檔聚焦鹽化行業數字化轉型&#xff0c;全面闡述了鹽化企業信息化建設的規劃方案&#xff0c;涵蓋戰略、架構、實施計劃、風險及效益等多個方面&#xff0c;旨在通過數字化…

2025年人工智能火爆技術總結

2025年人工智能火爆技術總結&#xff1a; 生成式人工智能 生成式人工智能可生成高質量的圖像、視頻、音頻和文本等多種內容。如昆侖萬維的SkyReels-V2能生成無限時長電影&#xff0c;其基于擴散強迫框架&#xff0c;結合多模態大語言模型和強化學習等技術&#xff0c;在運動動…

邊緣計算革命:大模型輕量化部署全棧實戰指南

當ResNet-152模型能在樹莓派4B上實現每秒27幀實時推理時&#xff0c;邊緣智能時代真正到來。本文解析從模型壓縮到硬件加速的完整技術棧&#xff0c;實測Transformer類模型在移動端的部署時延可壓縮至16ms&#xff0c;揭示ARM芯片實現INT4量化的工程秘訣與十種典型場景優化方案…

邊緣計算:數字世界的”末梢神經系統”解析-優雅草卓伊凡

邊緣計算&#xff1a;數字世界的”末梢神經系統”解析-優雅草卓伊凡 一、邊緣計算深度解析 1.1 邊緣計算的定義與架構 邊緣計算&#xff08;Edge Computing&#xff09;是一種分布式計算范式&#xff0c;它將數據處理能力從傳統的集中式云數據中心推向網絡邊緣&#xff0c;更…

面試手撕——迭代法中序遍歷二叉樹

思路 訪問順序和處理順序不一致導致迭代法難寫&#xff0c;體現在總要先遍歷根節點&#xff0c;才能訪問左右孩子&#xff0c;用null標記&#xff0c;null標記的節點表示已經訪問過了&#xff0c;下一次可以處理&#xff0c;所以在當前棧頂節點不是null的時候&#xff0c;都要…

AD系列:Windows Server 2025 安裝AD CS角色和頒發證書

什么是 Active Directory 證書服務&#xff1f; Active Directory 證書服務 (AD CS) 是一個 Windows Server 角色&#xff0c;負責頒發和管理在安全通信和身份驗證協議中使用的公鑰基礎結構 (PKI) 證書。 頒發和管理證書 數字證書可用于對電子文檔和消息進行加密和數字簽名&…

kubernetes》》k8s》》Service 、Ingress 區別

K8S>>Service 資料 K8S >>Ingress 資料 Ingress VS Service 物理層數據鏈路層網絡層傳輸層會話層表示層應用層 Ingress是一種用于暴露HTTP和HTTPS路由的資源&#xff0c;它提供了七層&#xff08;應用層&#xff09;的負載均衡功能。Ingress可以根據主機名、…

【java WEB】恢復補充說明

Server 出現javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右鍵項目 > Properties > Project Facets。Dynamic Web Module facet version選4.0即可 還需要在serv…

VMware 創建虛擬機+簡易安裝Ubuntu的詳細操作步驟

VMware 創建虛擬機安裝Ubuntu的詳細操作步驟 一、創建虛擬機1.1 點擊創建新的虛擬機1.2 選擇自定義創建虛擬機1.3 選擇虛擬機的硬件兼容性1.4 安裝客戶機操作系統1.5 簡易安裝信息1.6 命名虛擬機名稱1.7 處理器配置1.8 虛擬機內核選擇1.9 網絡類型1.9 選擇I/O 控制器類型1.10 選…

GCC-C語言“自定義段”

一、起因 事情的起因是這樣的,在看別人代碼時,發現了一種很有意思的寫法,因為本人主要是以應用層開發為主,所以對這種寫法還是比較少見的,所以研究了一下,就牽扯出了一些知識點,這里先賣個關子,繼續往下看。 二、經過 發現了一串這樣的代碼 static void do_mac(mcmd_…

【信息系統項目管理師-論文真題】2021上半年論文詳解(包括解題思路和寫作要點)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 試題1:論信息系統項目的合同管理1、寫作要點2、解題思路項目合同管理的過程項目合同主要的條款內容試題2:論信息系統項目的范圍管理1、寫作要點2、解題思路項目范圍管理的過程核心范圍對應的需求跟蹤矩陣項目…

python2反編譯部分

文章目錄 1、所需環境2、確認打包工具&#xff08;沒成功&#xff09;3、 解包.exe文件&#xff08;以PyInstaller為例&#xff09; - useful【***總的來說這一步對我有用】4、定位關鍵文件 - useful5、 修復.pyc文件頭&#xff08;關鍵步驟&#xff01;&#xff09;- maybe-ig…

基于STM32的中點圓算法,畫空心圓的函數

中點圓算法(Midpoint Circle Algorithm)是一種高效繪制圓的算法&#xff0c;它利用圓的對稱性和整數運算來避免浮點計算&#xff0c;非常適合嵌入式系統使用。 空心圓繪制函數實現 /*** brief 使用中點圓算法繪制空心圓* param x0: 圓心x坐標* param y0: 圓心y坐標* param…

Android Kotlin 項目完整集成 Bugly 異常監控指南

Android Kotlin 項目集成 Bugly 異常監控完整指南 一、Bugly 簡介 Bugly 是騰訊提供的專業移動應用異常監控平臺&#xff0c;支持&#xff1a; 崩潰報告&#xff08;Java/Native&#xff09;錯誤分析性能監控熱更新功能&#xff08;需額外配置&#xff09; 二、集成步驟 1…

【電腦維修】MERCURY水星無線網卡導致 Windows 網絡適配器無法連接的一種情況

故障現象 Powershell 無法啟動&#xff0c; Terminal 無法啟動&#xff0c; CMD 無法啟動。 操作1 重新拔插 MERCURY 無線USB網卡&#xff0c;上述各種終端恢復相應。 分析 應該是MERCURY驅動故障導致卡死 操作2 磁盤出現 MERCURY 盤。里面是一個 MERCURY.exe 驅動安裝程…

Docker 打上 Tag 和 Push 的意思

在 Docker 中&#xff0c;打 Tag&#xff08;Tagging&#xff09; 和 Push&#xff08;Pushing&#xff09; 是兩個關鍵操作&#xff0c;用于管理鏡像的版本并上傳到鏡像倉庫&#xff08;如 Docker Hub、阿里云 ACR、Harbor 等&#xff09;。 1. 打 Tag&#xff08;Tagging&…

簡化excel校驗提高開發效率

業務背景&#xff1a;上傳excel文件進行基礎數據校驗&#xff0c;然而東西太多寫著寫著就...自然成了測試的KPI了 解決思路&#xff1a;使用現有的注解處理&#xff0c;原理使用validate注解原理 直接上干貨&#xff0c;一行代碼搞定校驗&#xff1a; ValidateUtils.validat…

基于Koa實現的服務端渲染 ?

前段時間剛寫完畢業論文&#xff0c;現在一上來就是“基于”&#xff0c;哈哈。&#x1f92f; 這篇文章持續更新&#xff0c;涉及到的技術棧是Koa、Vue和Vite &#xff08;用React手搓服務端渲染好麻煩&#xff09;。但是現在能上生產的服務端渲染估計是Next&#xff08;配合Re…

Linux運維——Vim基礎

Vim基礎 一、移動光標1.1、基礎移動1.2、屏幕滾動 二、編輯操作2.1、插入模式2.2、刪除與修改2.3、復制粘貼 三、搜索與替換3.1、搜索3.2、替換 4、分屏與窗口管理4.1、分屏操作4.2、窗口調整 五、宏與批量操作六、效率技巧七、操作符7.1、內置操作符7.2、操作符 文本對象&…