女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何在bash shell腳本中接受參數(shù)

CHANBAEK ? 來(lái)源:TIAP ? 作者:GLIU ? 2022-12-09 17:34 ? 次閱讀

終端命令通常包含一些參數(shù),在使用的時(shí)候可以提供不同的參數(shù)來(lái)確定命令的執(zhí)行方式。POSIX規(guī)范中包含了用于命令行接口的選項(xiàng)。這也是與最早的UNIX應(yīng)用程序建立的一個(gè)由來(lái)已久的約定,所以當(dāng)你在寫(xiě)bash腳本的時(shí)候,需要知道如何在腳本中接受參數(shù)。

bash中的參數(shù)(選項(xiàng))解析

Bash中解析選項(xiàng)的策略是循環(huán)遍歷傳遞給shell腳本的所有參數(shù),確定它們是不是選項(xiàng),然后切換到下一個(gè)參數(shù)。重復(fù)此過(guò)程,直到?jīng)]有剩余選項(xiàng)。

從一個(gè)簡(jiǎn)單的布爾選項(xiàng)(有時(shí)稱為開(kāi)關(guān)或標(biāo)志)開(kāi)始:

#!/bin/bash


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


echo $ALPHA

在這段代碼中,我創(chuàng)建了一個(gè)while循環(huán),它作為一個(gè)無(wú)限循環(huán),直到?jīng)]有更多的參數(shù)要處理為止。if語(yǔ)句嘗試將在第一個(gè)位置($1)找到的任何參數(shù)與--alpha或-a匹配(這些是沒(méi)有特殊意義的任意選項(xiàng)名稱。在實(shí)際腳本中,可以使用--verbose和-v來(lái)觸發(fā)詳細(xì)輸出)。

shift關(guān)鍵字使所有參數(shù)移位1,這樣位置2($2)中的參數(shù)將移動(dòng)到位置1($1)。當(dāng)沒(méi)有其他參數(shù)要處理時(shí),將觸發(fā)else語(yǔ)句,這將中斷while循環(huán)。

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

測(cè)試一下這個(gè)腳本:

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


$ bash ./test.sh -a
1

已正確檢測(cè)到該選項(xiàng)。

檢測(cè)Bash中的參數(shù)

但有一個(gè)問(wèn)題:額外的參數(shù)被忽略。

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

要捕獲不作為選項(xiàng)的參數(shù),可以將剩余參數(shù)轉(zhuǎn)儲(chǔ)到Bash數(shù)組中。

#!/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

測(cè)試一下修改后的腳本:

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


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

帶參數(shù)的選項(xiàng)

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

要在Bash中實(shí)現(xiàn)這一點(diǎn),可以像使用布爾開(kāi)關(guān)一樣使用shift關(guān)鍵字,但將參數(shù)移位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

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

下面是對(duì)新版本腳本的測(cè)試:

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

選項(xiàng)解析變得很容易

在Bash中還有其他解析選項(xiàng)的方法。您可以交替使用case語(yǔ)句或getopt命令。無(wú)論您選擇使用什么,用戶的選項(xiàng)都是任何應(yīng)用程序的重要特性,Bash使其變得簡(jiǎn)單。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1866

    瀏覽量

    32858
  • 腳本
    +關(guān)注

    關(guān)注

    1

    文章

    396

    瀏覽量

    28341
  • Bash
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    10394
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【RT-Thread學(xué)習(xí)筆記】bash shell -e參數(shù)

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

    何在bash shell腳本中使用變量

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

    何在 Shell 腳本執(zhí)行語(yǔ)法檢查調(diào)試模式

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

    高級(jí)Bash 腳本編程指南

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

    【RT-Thread學(xué)習(xí)筆記】bash和dash-shell

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

    Raspberry Pi Bash Shell 腳本簡(jiǎn)介

      拋開(kāi)潛在的麻煩不談,Bash 可以是一個(gè)非常強(qiáng)大的工具,讓您可以自動(dòng)執(zhí)行各種任務(wù)。在即將發(fā)表的文章,我將展示如何使用 Bash 腳本以及一些硬件技巧來(lái)自動(dòng)化我的 Raspberr
    的頭像 發(fā)表于 08-15 15:08 ?1438次閱讀
    Raspberry Pi <b class='flag-5'>Bash</b> <b class='flag-5'>Shell</b> <b class='flag-5'>腳本</b>簡(jiǎn)介

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

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

    分享249個(gè)拿來(lái)即用的shell腳本

    ? 由于腳本案例太多,在此僅展示部分,完整版領(lǐng)取方式請(qǐng)見(jiàn)文末 ? ? ? 249個(gè)拿來(lái)即用的shell腳本! ? 這249個(gè)Shell腳本
    的頭像 發(fā)表于 07-07 10:52 ?1425次閱讀
    分享249個(gè)拿來(lái)即用的<b class='flag-5'>shell</b><b class='flag-5'>腳本</b>

    BASH shell腳本篇—條件命令

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

    BASH shell腳本篇—函數(shù)

    函數(shù)是代碼重用的最重要方式。Bash函數(shù)可以定義為一組命令,在bash腳本多次調(diào)用。
    的頭像 發(fā)表于 10-20 16:31 ?1395次閱讀

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

    Bash Shell腳本,可以使用多種方法來(lái)對(duì)文件進(jìn)行操作,包括讀取文件或?qū)懭胛募?/div>
    的頭像 發(fā)表于 10-23 16:51 ?879次閱讀

    如何利用shell進(jìn)行腳本程序的設(shè)計(jì)?

    利用Shell進(jìn)行腳本程序的設(shè)計(jì)可以按照以下步驟進(jìn)行: 選擇Shell解釋器:在Unix和Linux系統(tǒng),通常會(huì)默認(rèn)安裝一個(gè)或多個(gè)Shell
    的頭像 發(fā)表于 11-08 10:17 ?827次閱讀

    shell并行調(diào)用腳本

    Shell腳本,可以使用一些技巧來(lái)實(shí)現(xiàn)并行調(diào)用。以下是幾種常見(jiàn)的方法: 使用后臺(tái)進(jìn)程:在Shell腳本
    的頭像 發(fā)表于 11-08 10:23 ?1182次閱讀

    Shell腳本檢查工具ShellCheck介紹

    ShellCheck是一個(gè)用于bash/sh shell腳本的靜態(tài)分析工具,可以輔助檢查腳本語(yǔ)法錯(cuò)誤,給出建議增強(qiáng)腳本健壯性。
    的頭像 發(fā)表于 12-27 13:43 ?2618次閱讀
    <b class='flag-5'>Shell</b><b class='flag-5'>腳本</b>檢查工具ShellCheck介紹

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見(jiàn)的方法: 直接運(yùn)行腳本文件 在命令行,可以直接使用腳本文件的路徑來(lái)運(yùn)行
    的頭像 發(fā)表于 08-30 15:17 ?654次閱讀