Linux》》Shell腳本 基本語法

執行腳本的三種方式

查找變量的過程

變量引用的順序》》先從當前進程查詢變量,如果當前進程沒有此變量,默認去父進程查找這個變量。如果查找到則返回,否則一直查找到 祖宗(PID為1),還沒有,則就沒找到。
export修飾變量,則表明這個變量對子進程是可見的。或者說 用export 修飾的變量,可以轉遞給子進程。

在這里插入圖片描述

運算符

#  $((算式)) 是新語法  或  $[ 算式 ]  就語法 不推薦
# $((算式))  中的算式 可以用數學中 >=、*等  變量可省略 $   用途場景 數學運算、數值比較   不支持浮點型  
# $[ 算式 ]   大于 -gt,小于  lt等        變量可省略 $   用途場景 文件屬性  、字符串

在這里插入圖片描述

test

test expression

或者使用方括號的簡寫形式:

[ expression ] 這種更常用
注意:使用方括號格式時,表達式與方括號之間必須有空格,即 [空格EXPRESSION空格]
[ ] 》》》1, 即false
[ xx ] 》》0 ,即true
當 test 判斷的表達式為真時,返回狀態碼為 0;如果為假,則返回非 0 值。

在這里插入圖片描述
功能
test 命令可以進行以下幾種類型的測試:

數值比較:檢查兩個數值之間的關系。

字符串比較:檢查字符串是否相等或為空。

文件測試:檢查文件是否存在、是否可讀、是否可寫等。

常用選項
數值比較
-eq:等于

-ne:不等于

-gt:大于

-lt:小于

-ge:大于等于

-le:小于等于

# 數值比較
#!/bin/bashnum1=10
num2=20if test $num1 -lt $num2; thenecho "$num1 小于 $num2"
elseecho "$num1 不小于 $num2"
fi

字符串比較
=:字符串相等

!=:字符串不相等

-z:字符串為空

-n:字符串非空

# 字符串比較
#!/bin/bashstr1="hello"
str2="world"if [ "$str1" = "$str2" ]; thenecho "字符串相同"
elseecho "字符串不同"
fi

文件測試
-e:文件存在 existence

-f:文件是普通文件 file 文件存在且是一個普通的文件

-d:文件是目錄 directory 文件存在且是一個目錄

-r:文件可讀 read

-w:文件可寫 write

-x:文件可執行 execute

# 文件測試
#!/bin/bashFILE="/etc/passwd"if [ -e "$FILE" ]; thenecho "文件 $FILE 存在"
elseecho "文件 $FILE 不存在"
fi

&& 、|| 跟高級語言 and ,or 一樣, 還稱短路 運算符

條件1 && 條件2   》》 如果條件1為  真 true,則會繼續判斷 條件2   》》 如果條件1為  假  false ,則不會執行 條件2
條件1  ||  條件2》》 如果條件1為  真 true,則不會執行 條件2   》》 如果條件1為  假  false ,則會繼續判斷  條件2

在這里插入圖片描述
》》多重判斷條件
在這里插入圖片描述

流程控制

if 判斷
#############   單分支 ############  
if [ condition ];thencommand
fi
# 或者
if [ condition ] 
thencommand
fi
############   多分支 ############  
if [ condition ]; thencommand
elif [ condition ] 
thencommand
else command
fi
case

相當于 C# 中 switch case
;; 相當于 break
*) 相當于 default

casein
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac
#!/bin/bash
while true
do
echo "請錄入成績的等級"
read num
case $num inA) echo "優秀";;B) echo "良好";;C) echo "及格";;*) echo '不及格';;
esac
done
~          

在這里插入圖片描述

for
# 語法1
for (( 初始值; 循環控制條件; 變量變換  ))
docommand
done
# 例子
for((i=0;i<5;i++))
#  語法2
for var in item1 item2 ... itemN
docommand1command2...commandN
done
# 例子
for i in {0..4}
for i in `seq 0 4`
#  也可以寫成一行
for var in item1 item2 ... itemN; do command1; command2… done;

#!/bin/bash
for (( i=1;i<=100;i++))
dosum=$((sum + i))  # 或  sum=$[ $sum + $i]
done
echo $sum  
while
# 基本語法
while [ 條件判斷式 ]
docommand
done# 案例
#!/bin/bash
i=0
while [ $i -lt 101 ]
do((sum2=sum2+i))((i++))#或者# let sum2+=i# let i++# 或者換成 這種是舊語法  不推薦 # sum2=$[ $sum2 + $i ]# i=$[$i + 1]
done
echo $sum2

》》# 舊語法(不推薦)
result=$[4 * (5 + 1)]

》》# 新語法(推薦)
result=$((4 * (5 + 1)))
在這里插入圖片描述

read 讀取控制臺輸入

# 基本語法
read  (選項) (參數)
選項:-p   指定讀取值時的提示符-t   指定讀取值時等待的時間(單位秒),如果不加 -t,表示一直等下去
參數:變量:  指定讀取值的變量名 (讀取的賦給那個變量) 這個不能省略

在這里插入圖片描述

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

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

相關文章

C#.VB.NET多線程,多用戶下獨立鎖和全局鎖的區別

以下代碼,每個客戶端都分配了一個鎖嗎? 用戶WebSocket信息類Public Class UserWebSocketInfoPublic Property SessionID As StringPublic Property WebSocket As WebSocketPublic Property LastResponseTime As DateTimePublic Property PendingHeartbeatCount As IntegerPubl…

無人機加速器模塊技術解析

一、加速器模塊的運行方式 1. 傳感器數據采集與融合 加速度計核心作用&#xff1a;測量三維線性加速度&#xff08;X/Y/Z軸&#xff09;&#xff0c;結合陀螺儀&#xff08;角速度&#xff09;和磁力計&#xff08;方向&#xff09;構成九軸姿態傳感器&#xff0c;實時輸出…

用html實現數字生命

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>數學粒子動畫</title><style>body {mar…

SQLite3 在嵌入式系統中的應用指南

SQLite3 在嵌入式系統中的應用指南 一、嵌入式系統中 SQLite3 的優勢 SQLite3 是嵌入式系統的理想數據庫解決方案&#xff0c;具有以下核心優勢&#xff1a; 特性嵌入式系統價值典型指標輕量級適合資源受限環境庫大小&#xff1a;500-700KB零配置無需數據庫管理員開箱即用無…

通義大模型與現有企業系統集成實戰《CRM案例分析與安全最佳實踐》

1. 集成架構設計 &#xff08;1&#xff09;混合部署架構演進 #mermaid-svg-eW4YPoU2fdbnT4xp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-eW4YPoU2fdbnT4xp .error-icon{fill:#552222;}#mermaid-svg-eW4YPoU2f…

leetcode:746. 使用最小花費爬樓梯

學習要點 動態規劃正著推動態規劃倒著推理解遞歸在動態規劃與純遞歸的類比分析中體會兩者各自的特點 題目鏈接 746. 使用最小花費爬樓梯 - 力扣&#xff08;LeetCode&#xff09; 題目描述 解法1&#xff1a;動態規劃倒著推 // dp[i]--->從第i階樓梯到達樓頂最小花費int…

汽車毫米波雷達增強感知:基于相干擴展和高級 IAA 的超分辨率距離和角度估計.

重慶西南大學毫米波雷達團隊在IEEE Transactions on Consumer Electronics 上發表的一篇論文&#xff1a;《基于相干擴展和高級 IAA 的超分辨率距離和角度估計》。 本文深入研究了毫米波&#xff08;mmWave&#xff09;調頻連續波雷達距離和角度的超分辨問題。首先&#xff0c;…

軟件更新 | 從數據到模型,全面升級!TSMaster新版助力汽車研發新突破

為滿足汽車電子開發領域日益增長的測試與仿真需求&#xff0c;TSMaster最新版本聚焦實車數據采集、MBD智能建模與新API擴展三大核心功能。無論您是進行車載網絡測試、ECU開發還是自動化驗證&#xff0c;新版本都能為您提供更高效、更可靠的解決方案&#xff01; TSMaster 2025.…

PDF-XSS

前言&#xff1a; PDF文件是一種復雜的文檔格式&#xff0c;由一系列對象組成&#xff0c;包括字體、圖像、頁面內容等。PDF文件支持嵌入JavaScript代碼&#xff0c;這使得PDF文件不僅可以顯示靜態內容&#xff0c;還可以執行動態操作。這種特性被攻擊者利用來嵌入惡意腳本代碼…

MySQL 表關聯關系詳解

MySQL 表關聯關系詳解 本文檔詳細列舉了MySQL中常見的表關聯關系場景以及對應的SQL語句示例。 1. 一對一關系 (One-to-One) 場景&#xff1a;用戶表和用戶詳情表 一個用戶對應一個用戶詳情通常用于將大表拆分&#xff0c;提高查詢性能 -- 創建用戶表 CREATE TABLE users (…

kubernetes(k8s)集群部署(超詳細)

k8s部署 kubernetes集群圖例kubernetes 安裝倉庫初始化1、創建云主機2、初始化私有倉庫kube-master安裝1、防火墻相關配置2、配置yum倉庫(跳板機)3、安裝軟件包(master)4、鏡像導入私有倉庫5、Tab鍵設置6、安裝代理軟件包7、配置內核參數8、使用kubeadm部署9、驗證安裝結果計算…

「Flink」算子主要方法介紹

背景&#xff1a; 上期文章主要講了Flink項目搭建的一些方法&#xff0c;其中對于數據流的處理很大一部分是通過算子來進行計算和處理的&#xff0c;算子也是Flink中功能非常龐大&#xff0c;且很重要的一部分。 算子介紹&#xff1a; 算子在Flink的開發者文檔中是這樣介紹的…

3405. 統計恰好有 K 個相等相鄰元素的數組數目

3405. 統計恰好有 K 個相等相鄰元素的數組數目 給你三個整數 n &#xff0c;m &#xff0c;k 。長度為 n 的 好數組 arr 定義如下&#xff1a; arr 中每個元素都在 閉 區間 [1, m] 中。恰好 有 k 個下標 i &#xff08;其中 1 < i < n&#xff09;滿足 arr[i - 1] arr…

Spring AI 項目實戰(十):Spring Boot + AI + DeepSeek 構建智能合同分析技術實踐(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰(一):Spring AI 核心模塊入門2Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼)3Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼)4

impala中時間戳轉(DATE)指定格式的字符串

注意i&#xff1a;注意大小寫 timestamp\date–>string SELECT now(),from_timestamp(now(),yyyyMMdd);string->timestamp SELECT 20230710,to_timestamp(20230710,yyyyMMdd);日期加減 select 20231201,from_timestamp(date_add(to_timestamp(20231201,yyyyMMdd),1),…

百度下拉框出詞技術解密:72小時出下拉詞軟件原理分享

如何才能刷下拉詞&#xff1f;這個問題一直是企業做流量時最糾結的問題&#xff0c;百度下拉詞作為百度搜索體驗中的一項智能化功能&#xff0c;極大地方便了用戶快速完成搜索&#xff0c;也成為了企業在搜索引擎優化&#xff08;SEO&#xff09;策略中的重要流量入口。通過研究…

上海人工智能實驗室明珠湖會議首開,解答AI前沿疑問,推進科學智能

在通用人工智能&#xff08;AGI&#xff09;探索如火如荼的當下&#xff0c;如何加速突破&#xff1f;如何凝練關鍵問題、孕育顛覆性創新&#xff1f;2025年6月13日&#xff0c;上海人工智能實驗室主任、首席科學家&#xff0c;清華大學惠妍講席教授周伯文在首屆明珠湖會議&…

BeyondCompare安裝(永久免費使用+全網最詳細版)

一.下載&#xff1a; 官網下載&#xff08;速度較慢&#xff09;&#xff1a; https://www.scootersoftware.com/download.php 阿里云盤&#xff08;不限速&#xff09; https://www.alipan.com/s/WaG1z54BQ2U 二.安裝&#xff08;無腦下一步即可&#xff09; 三.永久免費…

如何用AI開發完整的小程序<7>—讓AI微調UI排版

上一節我們介紹了如何讓AI修改整體UI視覺效果。 不過有時候AI調整的并不理想&#xff0c;一些UI的布局還是需要微調。 比如已經實現的這個開始頁面&#xff0c;我覺得標題太高了&#xff0c;這時候可以自己調&#xff0c;也可以讓AI單獨調&#xff0c;下面詳細介紹。 一、手動…

64-Oracle Redo Log

小伙伴們&#xff0c;關于數據庫的redo log相信大家都操作很多次了,且這是OCM考試必考內容。Oracle Redo Log是一種特殊的日志文件&#xff0c;用于完整地記錄數據庫中所有數據變更的詳細信息。當數據庫執行插如、更新或刪除等更新操作&#xff0c;這些操作并不會立刻寫入數據庫…