色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

CHANBAEK ? 來源:TIAP ? 作者:GLIU ? 2022-12-09 17:34 ? 次閱讀

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

bash中的參數(選項)解析

Bash中解析選項的策略是循環遍歷傳遞給shell腳本的所有參數,確定它們是不是選項,然后切換到下一個參數。重復此過程,直到沒有剩余選項。

從一個簡單的布爾選項(有時稱為開關或標志)開始:

#!/bin/bash


while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
else
    break
fi
done


echo $ALPHA

在這段代碼中,我創建了一個while循環,它作為一個無限循環,直到沒有更多的參數要處理為止。if語句嘗試將在第一個位置($1)找到的任何參數與--alpha或-a匹配(這些是沒有特殊意義的任意選項名稱。在實際腳本中,可以使用--verbose和-v來觸發詳細輸出)。

shift關鍵字使所有參數移位1,這樣位置2($2)中的參數將移動到位置1($1)。當沒有其他參數要處理時,將觸發else語句,這將中斷while循環。

在腳本的末尾,將$ALPHA的值打印到終端。

測試一下這個腳本:

$ bash ./test.sh --alpha
1
$ bash ./test.sh


$ bash ./test.sh -a
1

已正確檢測到該選項。

檢測Bash中的參數

但有一個問題:額外的參數被忽略。

$ bash ./test.sh --alpha foo
1
$

要捕獲不作為選項的參數,可以將剩余參數轉儲到Bash數組中。

#!/bin/bash


while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
else
    break
fi
done


echo $ALPHA


ARG=( "${@}" )
for i in ${ARG[@]}; do
    echo $i
done

測試一下修改后的腳本:

$ bash ./test.sh --alpha foo
1
foo
$ bash ./test.sh foo


foo
$ bash ./test.sh --alpha foo bar
1
foo
bar

帶參數的選項

有些選項本身需要一個參數。例如,您可能希望允許用戶設置圖形的顏色或分辨率等屬性,或者將應用程序指向自定義配置文件。

要在Bash中實現這一點,可以像使用布爾開關一樣使用shift關鍵字,但將參數移位2而不是1。

#!/bin/bash


while [ True ]; do
if [ "$1" = "--alpha" -o "$1" = "-a" ]; then
    ALPHA=1
    shift 1
elif [ "$1" = "--config" -o "$1" = "-c" ]; then
    CONFIG=$2
    shift 2
else
    break
fi
done


echo $ALPHA
echo $CONFIG


ARG=( "${@}" )


for i in ${ARG[@]}; do
    echo $i
done

在這段代碼中,我添加了一個elif子句來將每個參數與--config和-c進行比較。在匹配的情況下,名為CONFIG的變量的值被設置為第二個參數的值(這意味著--CONFIG選項需要一個參數)。所有參數移位2:1移位--config或-c,1移位其參數。與往常一樣,循環會重復,直到沒有匹配的參數。

下面是對新版本腳本的測試:

$ bash ./test.sh --config my.conf foo bar
my.conf
foo
bar
$ bash ./test.sh -a --config my.conf baz
1
my.conf
baz

選項解析變得很容易

在Bash中還有其他解析選項的方法。您可以交替使用case語句或getopt命令。無論您選擇使用什么,用戶的選項都是任何應用程序的重要特性,Bash使其變得簡單。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 參數
    +關注

    關注

    11

    文章

    1829

    瀏覽量

    32195
  • 腳本
    +關注

    關注

    1

    文章

    389

    瀏覽量

    14858
  • Bash
    +關注

    關注

    0

    文章

    57

    瀏覽量

    10179
收藏 人收藏

    評論

    相關推薦

    【RT-Thread學習筆記】bash shell -e參數

    bash shell -e參數的含義與用途,你了解嗎?
    的頭像 發表于 07-28 05:20 ?1833次閱讀
    【RT-Thread學習筆記】<b class='flag-5'>bash</b> <b class='flag-5'>shell</b> -e<b class='flag-5'>參數</b>

    何在bash shell腳本中使用變量

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

    何在 Shell 腳本執行語法檢查調試模式

    shell 腳本中發現有錯誤,shell 會在終端輸出錯誤,不然就不會顯示任何東西。激活語法檢查的命令如下:$ bash -n scri
    發表于 12-31 11:04

    高級Bash 腳本編程指南

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

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

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

    Raspberry Pi Bash Shell 腳本簡介

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

    Bash腳本特殊變量$0是什么?

    Bash 腳本,`$0` 是一個特殊變量,它代表當前腳本的路徑和名稱。這個變量用于表示腳本自身,它是
    的頭像 發表于 05-12 14:41 ?1841次閱讀

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

    ? 由于腳本案例太多,在此僅展示部分,完整版領取方式請見文末 ? ? ? 249個拿來即用的shell腳本! ? 這249個Shell腳本
    的頭像 發表于 07-07 10:52 ?1179次閱讀
    分享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 ?617次閱讀
    <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 ?1098次閱讀

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

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

    如何利用shell進行腳本程序的設計?

    利用Shell進行腳本程序的設計可以按照以下步驟進行: 選擇Shell解釋器:在Unix和Linux系統,通常會默認安裝一個或多個Shell
    的頭像 發表于 11-08 10:17 ?621次閱讀

    shell并行調用腳本

    Shell腳本,可以使用一些技巧來實現并行調用。以下是幾種常見的方法: 使用后臺進程:在Shell腳本
    的頭像 發表于 11-08 10:23 ?948次閱讀

    Shell腳本檢查工具ShellCheck介紹

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

    執行shell腳本的方式包括什么

    執行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運行腳本文件 在命令行,可以直接使用腳本文件的路徑來運行
    的頭像 發表于 08-30 15:17 ?320次閱讀
    主站蜘蛛池模板: 精品人妻一区二区三区视频53 | 国产精品第1页| 无限资源在线看影院免费观看 | 国产成人无码WWW免费视频在线| 欧美亚洲国产免费高清视频| 超碰v| 亚洲精品无码AV中文字幕蜜桃| 久9视频这里只有精品123| 91精品国产入口| 视频一区亚洲中文字幕| 好湿好紧水多AAAAA片秀人网 | 回复术士勇者免费观看全集 | 国产精品成人啪精品视频免费观看| 亚洲春色AV无码专区456| 久久最新地址获取| 囯产精品一区二区三区线| 亚洲人成77777在线视频| 男女夜晚在爽视频免费观看| 国产精品久久久久婷婷五月色| 一级片mp4| 午夜一级免费视频| 欧美人妖12p| 久久精品热在线观看30| 国产欧美日韩国产高清| 0855福利| 亚洲中字幕永久在线观看| 日韩人妻双飞无码精品久久| 猫咪www958ii| 久久成人免费观看全部免费| 国产欧美日韩网站| 儿子操妈妈视频| videossexo乌克兰| 中文字幕在线观看国产| 亚洲中文久久久久久国产精品| 偷拍亚洲制服另类无码专区| 欧美一区二区在线观看| 久久天堂成人影院| 久久观看视频| 久久综合伊人| 男总裁憋尿PLAY灌尿BL| 美女坐脸vk|