SHELL編程簡介

1.腳本格式:

聲明位于shell腳本的行首,通常形式如下:

  • #!/bin/sh
  • #!/bin/bash

其中#表示注釋,!聲明所使用的shell,后面為所使用shell的絕對路徑。

2.常用函數

echo:shell輸出語句,可不接參數使用。其常用參數為:

  • -n:不換行
  • -e:將通配符按照格式進行處理,如:
    • \a 發出警告聲;
    • \b 刪除前一個字符;
    • \c 最后不加上換行符號;
    • \f 換行但光標仍舊停留在原來的位置;
    • \n 換行且光標移至行首;
    • \r 光標移至行首,但不換行;
    • \t 插入tab;
    • \v 與\f相同;
    • \\ 插入\字符;
    • \nnn 插入nnn(八進制)所代表的ASCII字符;

read:獲取目標輸入,將輸入賦值給變量。使用方法如下:

  • read a "Please input a:"——輸出”Please input a:“ 并將輸入的值傳遞給變量a;
  • read a b——無輸出,并將輸入的值傳遞給變量a與b,以空格分割;
  • read——無輸出,并將輸出傳遞給$REPLY

test:用于執行表達式,并通過$?查看表達式的值。(0真1假)

  • 對于每條Linux命令而言,都有其方法的退出狀態,同樣可以通過$?查詢,0為成功,1為失敗。

3.條件判斷語句

if:條件語句,具體寫法如下:

  • if expression1
  • then
    • commands1
  • elif expression2
  • then
    • commands2
  • else
    • commandsn
  • fi

case:選擇語句,具體寫法如下:

  • case expression1 in
    • pattern1)
      • command1
      • ;;
    • pattern2)
      • commands2
      • ;;
    • ……
    • *) #缺省執行
      • commandsn
      • ;;
  • esac

4. 循環控制語句

for:循環語句,具體寫法如下:

  • for variable in list:
  • do
    • commands
  • done

其中list需要是一個可迭代對象,如:列表、命令、字符串、文件名列表等。for循環執行的次數取決于可迭代對象的長度。一般的,循環中需要出現循環變量,但不絕對。

while、until:循環語句,具體寫法如下

  • while expr
  • do
    • commands
  • done

首先執行expr,判斷其退出狀態,若為0則執行循環體內的commands直至expr表達式結果非0;until則與之相反。

break [n]、continue [n]:循環跳出語句,用于跳出第n重循環。

5.進程控制語句

exit n:退出腳本,其中n用于代表出錯代碼,從0-255;一般約定0代表正常退出;

sleep n:睡眠n秒鐘;

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

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

相關文章

Django 中的 ORM 基礎語法

深入剖析 Django 中的 ORM 語法:從基礎到實戰進階 在 Django 開發領域,ORM(對象關系映射)是開發者高效操作數據庫的得力工具。它以簡潔直觀的 Python 代碼,替代繁瑣的 SQL 語句,極大提升了開發效率。本文將…

A10服務器使用vllm推理框架成功運行Qwen3大模型

1.下載Qwen3大模型: git clone https://www.modelscope.cn/Qwen/Qwen3-1.7B.git放在服務器的/mnt/workspace/Qwen3-1.7B目錄下。 2.創建python虛擬環境: python3 -m venv venv1 source venv1/bin/activate3.安裝vllm推理框架 pip install vllm 4.啟動…

Disruptor—1.原理和使用簡介

大綱 1.Disruptor簡介 2.Disruptor和BlockingQueue的壓測對比 3.Disruptor的編程模型 4.Disruptor的數據結構與生產消費模型 5.RingBuffer Disruptor Sequence相關類 6.Disruptor的WaitStrategy消費者等待策略 7.EventProcessor EventHandler等類 8.Disruptor的運行…

谷歌瀏覽器調試python pygui程序

谷歌瀏覽器地址:chrome://inspect/#devices 前端vue為8080, 配置如下 pychat 需要配置環境變量 PYTHONUNBUFFERED1;QTWEBENGINE_REMOTE_DEBUGGING9012

手寫Tomcat(二)—Tomcat簡化模型架構

一、 Tomcat架構 Tomcat的主要角色是 servlet容器,提供一個解釋器,能夠解析并執行JavaScript Object Notation (JON)腳本(后更改為Servlet),并將請求傳送到指定的服務器(如JavaBean)。因此&…

Android 網絡全棧攻略(五)—— 從 OkHttp 攔截器來看 HTTP 協議二

上一篇我們介紹了 OkHttp 的責任鏈以及第一個內置攔截器 —— 重試與重定向攔截器。本篇我們將剩余四個攔截器的解析做完。 1、橋接攔截器 BridgeInterceptor 作為請求準備和實際發送之間的橋梁,自動處理 HTTP 請求頭等繁瑣工作。比如設置請求內容長度&#xff0c…

JDBC-java操作數據庫

1.基本結構: package com.atguigu.servlets;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;public class JDBCemo {public static void main(String[] args) throws Exception{String url "jdbc:mysql:///mysql&qu…

七彩喜適老化改造:讓每個空間成為長者尊嚴的守護者

隨著我國老齡化進程的加速,居家養老逐漸成為老年人首選的生活方式。 為了讓老年人能夠在熟悉的環境中安享晚年,適老化改造應運而生。 七彩喜作為居家養老服務的創新者,致力于通過科學設計和人性化改造,為老年人提供安全、舒適、…

【動態規劃】5 從一次函數出發推導斜率優化dp

背景 基于例題《任務安排》逐步推導進行斜率優化。 引入 例題:P2365 任務安排 考慮動態規劃。使用 d p i , j dp_{i,j} dpi,j? 表示前 i i i 個任務分了 j j j 段的最小費用。 顯然,有 d p i , j min ? k 1 i ? 1 ( d p i , j , d p k , j…

MySQL中實現大數據量的快速插入

一、SQL語句優化? 1. ?批量插入代替單條插入? ?單條插入會頻繁觸發事務提交和日志寫入,效率極低。?批量插入通過合并多條數據為一條SQL語句,減少網絡傳輸和SQL解析開銷。 -- 低效寫法:逐條插入 INSERT INTO table (col1, col2) VALUE…

C++23中std::span和std::basic_string_view可平凡復制提案解析

文章目錄 一、引言二、相關概念解釋2.1 平凡復制(Trivially Copyable)2.2 std::span2.3 std::basic_string_view 三、std::span和std::basic_string_view的應用場景3.1 std::span的應用場景3.2 std::basic_string_view的應用場景 四、P2251R1提案對std::…

廣東省省考備考(第十八天5.23)—言語:語句填空題(聽課后強化訓練)

錯題 解析 橫線出現在文段中間,需結合上下文內容進行分析。文段開篇指出逃離北上廣深的話題時而出現,一些人離開大城市回到小城市。隨后通過轉折詞“但”引出橫線內容,且結合橫線后人才傾向于向更發達的地方流動的內容,橫線處應體…

持續更新 ,GPT-4o 風格提示詞案例大全!附使用方式

本文匯集了各類4o風格提示詞的精選案例,從基礎指令到復雜任務,從創意寫作到專業領域,為您提供全方位的參考和靈感。我們將持續更新這份案例集,確保您始終能夠獲取最新、最有效的提示詞技巧。 讓我們一起探索如何通過精心設計的提…

創建型:建造者模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 工作流程 2.3 實現案例 2.4 變體:鏈式建造者(常見于多參數對象,無需指揮者) 3、優缺點分析 4、適用場景 1、核心思想 目的:將復雜對象的構建過程與其表示分離…

力扣-長度最小的子數組

1.題目描述 2.題目鏈接 LCR 008. 長度最小的子數組 - 力扣(LeetCode) 3.題目分析 這道題目我們使用的也是雙指針。我們可以定義兩個指針都指向數組第一個元素,然后使用right指針遍歷原數組,計算left指針到right指針之間的所有元…

JAVA開發工具延長方案

親測穩定的延長方案與避坑指南 真的搞不懂了,說點專業的術語竟然成了 QINQUAN。那就直接點,把這個方案帶給需要的開發者。 延長工具直通車 保姆級教程 延長方案https://mp.weixin.qq.com/s/uajM2Y9Vz6TnolzcLur_bw還是讓大家看看,發什么會被…

SpringAI開發SSE傳輸協議的MCP Server

SpringAI 訪問地址:Spring AI ? Spring AI?是一個面向人工智能工程的應用框架,由Spring團隊推出,旨在將AI能力集成到Java應用中。Spring AI的核心是解決AI集成的根本挑戰,即將企業數據和API與AI模型連接起來?。 MCP…

JAVA動態生成類

在java的加載過程一般都是要預先定義java類,然后通過經過加載->連接->初始化三步。連接過程又可分為三步:驗證->準備->解析。初始化的類是不允許修改。但是在日常的工作中有時候需要動態生成類,那第這種情況怎么辦呢? 可以這么處理: 1、先定義一個空的類,僅…

深入解析Java微服務架構:Spring Boot與Spring Cloud的整合實踐

深入解析Java微服務架構:Spring Boot與Spring Cloud的整合實踐 引言 隨著云計算和分布式系統的快速發展,微服務架構已成為現代軟件開發的主流模式。Java作為企業級應用開發的核心語言,結合Spring Boot和Spring Cloud,為開發者提…

03_基礎篇-NumPy(下):深度學習中的常用操作

03_基礎篇-NumPy(下):深度學習中的常用操作 通過上節課的學習,我們已經對NumPy數組有了一定的了解,正所謂實踐出真知,今天我們就以一個圖像分類的項目為例,看看NumPy的在實際項目中都有哪些重要…