精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

bash shell腳本常用代碼記錄

冬至子 ? 來源:CSDN ? 作者:谷公子 ? 2023-06-01 17:49 ? 次閱讀

任何編程語言,常用的語法和代碼結構其實不多的,如果為了快速的掌握入手一門編程語言,我認為只需要把該語言的常見語法和代碼記下來,再結合實際需求去拼接成新的代碼。這篇博客主要是記錄bash shell的一些用法,便于日后復習。所以這篇博客不會一次性寫完的,會不斷更新新的例子進來。

shell不是具體哪一款程序,它是一類程序的統稱,這些程序只要能夠按照用戶的要求去調用操作系統接口,就可以稱之為shell程序。常用shell程序有:bash, csh, tcsh, zsh等。

當我們在linux內打開一個terminal,此時就開啟了一個shell程序供我們與操作系統進行交互。可以設置具體是開啟了哪一款shell程序。

1. 列出當前linux系統安裝的所有shell

在terminal內執行:cat /etc/shells,結果如下:

image.png

linux系統中當前安裝的所有shell的列表存儲在系統的/etc文件夾的"shells"文件中。默認情況下它具有只讀權限,并且每當我們在系統中安裝新shell時都會自動修改它。

2. 查看當前使用的shell

在terminal內執行:echo $SHELL,結果如下圖:

image.png

3. 查看bash的手冊

在terminal內執行:man bash

4. 定義變量和使用變量

變量名不需要聲明,直接這樣寫:variable_name=variable_value。使用變量需要用$放在variable_name前就行,比如:

var="define variable"
echo $var

5. 注釋

單行注釋使用#號

多行注釋可以通過在<< COMMENT和COMMENT之間加上注釋

# echo $var
 
< < comment
export var
test comment
echo "somethin"
comment

6. Bash腳本第一行

Bash腳本文件的第一行必須是:#!/bin/bash。#!稱為shebang,該行的其余部分是解釋器的路徑,用于指定bash shell在操作系統中的位置。

She Bang(#!)是一個字符序列,由腳本開頭的符號(#)和感嘆號(!)組成。在類似Unix的操作系統下,當帶有shebang的腳本作為程序運行時,程序加載器會將第一行的其余行解析為解釋器指令。因此,SheBang表示執行腳本行的解釋器,并且它被稱為執行各種腳本(如Bash,Python等)的路徑指令。

shebang的格式很重要,格式不正確會導致命令工作不正常。因此,在創建腳本時,要始終記住SheBang格式的這兩點:

  • 它應該始終在腳本的第一行。
  • 在#!和解釋器的路徑之間,#之前不應有任何空格。

7. 字符串和引號

Bash使用空格來確定單獨的項目,引號可用于處理帶有空格字符的文本。引號分為單引號和雙引號。使用簡單的文本和字符串時,使用單引號和雙引號沒任何區別。但如果需要對shell變量擴展,則只能使用雙引號。如果在單引號中使用變量,則不會將其視為變量。例子如下:

Bash script:
var="define variable"
echo "The value is $var"
echo 'The value is $var'
 
The result is:
The value is define variable
The value is $var

8. Bash變量

變量名可以包含字母、數字和下劃線,并且其名稱只能以字母和下劃線開頭。不能定義以任何數字開頭的變量。Bash變量不必在變量聲明時定義變量的數據類型。Bash變量是無類型的,只需通過分配其值來鍵入變量名稱,它會自動判斷數據類型。如果將數字值分配給變量,它將自動轉為整數工作,如果將字符值分配給該變量,則它將轉為字符串類型。

  • 在讀取或打印變量時,需要在變量名前加上美元($)符號;
  • 給變量賦值時,省略美元符號($);且變量名稱和值之間的等號(=)兩側不應有空格。
  • 變量名稱區分大小寫:x和X視為兩個不同的變量;
  • 變量可以放在Bash腳本中的任何地方或命令行中,因為在運行時,Bash會將其替換為其分配的值;
  • 不需要使用任何單引號或雙引號來定義具有單個字符串的變量。需要將多個單詞或字符串作為單個項輸入到變量中,需要使用引號。

例子如下:

The bash script:
var="define variable"
echo "The value is $var"
var=123456
echo "The value is $var"
var=variable
echo "The value is $var"
 
The result is:
The value is define variable
The value is 123456
The value is variable

9. 系統變量和用戶自定義變量

Shell或UNIX系統中都有兩種類型的變量:系統定義的變量和用戶定義的變量。

系統定義的變量是由操作系統本身創建和維護的預定義變量,通常是以大寫字母進行定義的。要了解系統中有哪些系統變量的列表,在命令行或腳本中輸入命令:set,或env,或printenv。例子如下:

The bash script:
echo $BASH
echo $BASH_VERSION
echo $OSTYPE
 
The result is:
/bin/bash
4.2.46(2)-release
linux

用戶定義的變量是由用戶創建和維護,通常這些變量以小寫形式定義,但不強制,也可以定義成大寫的。第8點已經講過如何定義變量了,這里不說了。

10. 命令行參數

使用命令行參數可以給Bash腳本傳遞參數使腳本更具靈活性。在腳本運行時,以空格見間隔,跟在腳本名稱后面。在Bash中,以下特殊變量會記錄傳遞的參數:

  • $0 - 指定要調用的腳本的名稱;
  • $1-$9 - 存儲前9個自變量的名稱,或可用作自變量的位置;
  • $# - 指定傳遞給腳本的參數總數(計數);
  • $* - 通過將所有命令行參數連接在一起來存儲它們;
  • $@ - 將參數列表存儲為數組;
  • $? - 指定當前腳本的進程ID;
    • 指定最后一個命令或最近執行過程的退出狀態;
  • $! - 顯示最后一個后臺作業的ID;

例子如下:

The script is:
echo 'echo $0 is' $0
echo 'echo $1 is' $1
echo 'echo $2 is' $2
echo 'echo $3 is' $3
echo 'echo $4 is' $4
echo 'echo $5 is' $5
echo 'echo $6 is' $6
echo 'echo $# is' $#
echo 'echo $* is' $*
echo 'echo $@ is' $@
echo 'echo $? is' $?
echo 'echo $$ is' $$
echo 'echo $! is' $!
 
Run script: > >./test_bash.sh this is the first script
 
The result is:
echo $0 is ./test_bash.sh
echo $1 is this
echo $2 is is
echo $3 is the
echo $4 is first
echo $5 is script
echo $6 is
echo $# is 5
echo $* is this is the first script
echo $@ is this is the first script
echo $? is 0
echo $$ is 621356
echo $! is

在$@數組里的參數可以傳遞給其它數組并引用。

args=("$@")  
echo ${args[0]} ${args[1]} ${args[2]} ${args[3]}
 
The result is:
this is the first

11. 命令替換

命令替換允許命令的輸出替換命令本身。Bash通過在子shell環境中執行命令并用命令的標準輸出替換命令,并刪除任何尾隨的換行符。常用的命令替換語法為:

語法1:將要替換的命令放在反引號里
variable_name=`command_name`  
variable_name=`command_name [option...] argument1 argument2...`  
語法2:將要替換的命令放在圓括號里,且以美元符號($)開頭
variable_name=$(command_name)  
variable_name=$(command_name [option...] argument1 argument2...)
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux系統
    +關注

    關注

    4

    文章

    591

    瀏覽量

    27356
  • Shell
    +關注

    關注

    1

    文章

    363

    瀏覽量

    23297
  • bash終端
    +關注

    關注

    0

    文章

    7

    瀏覽量

    1991
收藏 人收藏

    評論

    相關推薦

    shell腳本進階】幾個常用shell進階腳本

    shell腳本進階】幾個常用shell進階腳本
    的頭像 發表于 09-19 08:59 ?1845次閱讀
    【<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>進階】幾個<b class='flag-5'>常用</b>的<b class='flag-5'>shell</b>進階<b class='flag-5'>腳本</b>

    如何在bash shell腳本中使用變量

    如果你使用編程語言編寫過程序,那么一定接觸過變量。而在 bash 腳本的編寫時,變量也是一個很重要的概念。今天我們分享一下如何在 bash 腳本中使用變量。
    發表于 12-02 16:32 ?2063次閱讀
    如何在<b class='flag-5'>bash</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>中使用變量

    Linux中常用Shell腳本示例

    當談論一線運維工作中的常用 Shell 腳本時,以下是一些實用的例子。
    發表于 09-08 09:42 ?606次閱讀

    shell腳本編寫之本地腳本的編寫和執行

    用來指定使用的shell應用;echo "my first shell !"為腳本中編寫的命令代碼。2、執行在執行腳本
    發表于 08-28 09:36

    Shell腳本編程實驗

    ,比較容易識別,led1.sh就知道是shell腳本程序)簡單作如下說明:第一行代碼:#!是一個約定的標記,它告訴系統這個腳本需要什么解釋器來執行,即使用哪一種
    發表于 10-22 18:25

    高級Bash 腳本編程指南

    高級Bash 腳本編程指南
    發表于 10-26 08:33 ?7次下載
    高級<b class='flag-5'>Bash</b> <b class='flag-5'>腳本</b>編程指南

    shell腳本常用的調試方法介紹

    shell 是用戶和操作系統交互的一個程序,經常用于執行一些自動化或者重復繁瑣的任務,現在所有的 Linux 系統基本都自帶了該程序,我們只需要編寫好shell腳本,直接執行就可以了,
    的頭像 發表于 09-01 10:43 ?3249次閱讀

    【RT-Thread學習筆記】bash和dash-shell

    ? 最近在工作中遇到一個很奇葩的問題,就是一個嵌入式的SDK編譯,它里面執行shell命令的時候,使用的dash shell來解析,而通常我們默認用的是bash shell來解析;我按
    的頭像 發表于 07-30 13:49 ?1180次閱讀
    【RT-Thread學習筆記】<b class='flag-5'>bash</b>和dash-<b class='flag-5'>shell</b>

    Raspberry Pi Bash Shell 腳本簡介

      拋開潛在的麻煩不談,Bash 可以是一個非常強大的工具,讓您可以自動執行各種任務。在即將發表的文章中,我將展示如何使用 Bash 腳本以及一些硬件技巧來自動化我的 Raspberry Pi 冷卻風扇。
    的頭像 發表于 08-15 15:08 ?1152次閱讀
    Raspberry Pi <b class='flag-5'>Bash</b> <b class='flag-5'>Shell</b> <b class='flag-5'>腳本</b>簡介

    如何在bash shell腳本中接受參數

    終端命令通常包含一些參數,在使用的時候可以提供不同的參數來確定命令的執行方式。POSIX規范中包含了用于命令行接口的選項。這也是與最早的UNIX應用程序建立的一個由來已久的約定,所以當你在寫bash腳本的時候,需要知道如何在腳本
    的頭像 發表于 12-09 17:34 ?2659次閱讀

    分享249個拿來即用的shell腳本

    ? 由于腳本案例太多,在此僅展示部分,完整版領取方式請見文末 ? ? ? 249個拿來即用的shell腳本! ? 這249個Shell腳本
    的頭像 發表于 07-07 10:52 ?1156次閱讀
    分享249個拿來即用的<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>

    BASH shell腳本篇—條件命令

    這篇文章介紹下BASH shell中的條件相關的命令,包括:if, case, while, until, for, break, continue。
    的頭像 發表于 10-11 15:21 ?581次閱讀
    <b class='flag-5'>BASH</b> <b class='flag-5'>shell</b><b class='flag-5'>腳本</b>篇—條件命令

    BASH shell腳本篇—函數

    函數是代碼重用的最重要方式。Bash函數可以定義為一組命令,在bash腳本中多次調用。
    的頭像 發表于 10-20 16:31 ?1033次閱讀

    BASH shell腳本篇—文件處理介紹

    Bash Shell腳本中,可以使用多種方法來對文件進行操作,包括讀取文件或寫入文件。
    的頭像 發表于 10-23 16:51 ?579次閱讀

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個用于bash/sh shell腳本的靜態分析工具,可以輔助檢查腳本語法錯誤,給出建議增強腳本健壯性。
    的頭像 發表于 12-27 13:43 ?2011次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹