滿足後 要求 為 能夠運行bash腳本,並了解 如何定義功能, 學習怎樣 在bash函數中返回值。 為此,我們將在Bash中創建一個小型但功能強大的程序 計算DNI的字母。 我有個好消息:Bash也可以 在Windows 10上安裝。 借助可以在操作系統中添加Linux的所有功能的功能,我們可以說...與眾不同。
首先,我們必須 了解如何 子串,無論使用哪種語言,它都有可能 返回字符串的一部分 從鏈條的指示,段的位置和長度。 讓我們看一下這種行為的一個例子。 我們用以下命令創建腳本
$ touch prueba_substring $
然後,使用您喜歡的編輯器添加以下代碼。 在終端模式下 我首選的編輯器是mcedit。 但是最近我看到納米正在增強。
#!/usr/bin/env bash # Demo comportamiento de substrings en Bash # Pedro Ruiz Hidalgo # version 1.0.0 # Febrero 2017 ret="\n" CADENA="siempre uso Linux con Ubuntu y Ubunlog, claro!" # "0123456789012345678901234567890123456789012345" # " 1 2 3 4 " # (usa la regla para medir los caracteres) echo -e $ret ${CADENA:12} echo -e $ret ${CADENA:12:5} echo -e $ret "Aprendo en ${CADENA:31:7}" exit 0
添加權限並像這樣執行:
$ chmod +x prueba_substring $ ./prueba_substring $
如果一切順利,它應該返回以下結果:
Linux Con Ubuntu y Ubunlog, claro! Linux Aprendo en Ubunlog
子串操作
如您所見 我突出顯示了第13至15行 從腳本和步驟到 解釋你的代碼. Echo 與 參數“ -e” 讓我們來展示 下一行字符,我們已經在 第7行並分配給變量«ret».
第13行:我顯示了子字符串(子串),如第8行所述 從位置12開始. 總是從位置0開始計數.
第14行:從 CHAIN變量的位置12,我顯示了5的段。 正如您將要驗證的,這對應於 子字符串“ Linux”.
第15行:我撰寫了一個 用引號引起來的新字符串 我從《我學習》開始,接著是CHAIN變量的子字符串 從第31位開始,取7分:這對應於 «Ubunlog».
回發功能
使用Bash的return機制是由“ return”命令產生的,但是,當我們必須將其與Bash變量進行匹配時,它實現了一種“奇怪”的機制,您必須習慣這種機制。 讓我們看下面的例子:
#!/usr/bin/env bash function suma(){ local a=$1 local b=$2 return $(( $a + $b )) } suma 12 23 retorno=$? echo $retorno
必須始終在Bash中使用函數之前定義函數因此, 家當 我們在第4行聲明函數sum 我們通過“本地”定義第一個參數的分配 ($ 1)到變量“ a”。 第5行的相同步驟,其中 我們將第二個參數a($ 2)分配給變量«b»。 在第XNUMX行中,我們使用兩個參數調用sum函數,這兩個參數將通過 變量“ a”和“ b”,並通過“ return”返回它們,可以在功能說明中輕鬆看到。
我們在 第10行執行函數sum的結果.
在學習並理解了其中的方式之後 值的返回以及對變量的賦值 讓我們來看一下我們的程序 用Bash計算DNI字母.
使用Bash計算DNI字母的腳本
#!/usr/bin/env bash nl="\n" LETRAS="TRWAGMYFPDXBNJZSQVHLCKEO" NORMAL=0 ERROR=66 if [ $# -lt 1 ]; then echo -e "$nl Cálculo DNI, introduce número$nl" read -r ndni [ -z "${ndni//[0-9]}" ] && [ -n "$ndni" ] || echo "Sólo números" && exit $ERROR else ndni=$1 fi modulo () { return $(( $ndni % 23 )) } modulo ndni mod=$? echo $ndni-${LETRAS:$mod:1} exit $NORMAL
La DNI的來信 對應於 編號模塊23。 埃斯托斯 我們將數字除以23 y 而不是看商 我們觀察其餘部分。 換句話說,就像 被23整除的數字將為零,那封信 對應的是«T», 從此 在位置0,正如我們在上面的腳本中看到的那樣, 所有子串從零開始計數。 也就是說,通過該模塊,我們將始終獲得數字 在0(字母“ T”)和22(字母“ O”)之間。 與其他語言一樣,在Bash中 該模塊是通過百分比運算符“%”獲得的.
在 第5行,我們定義字母 在您的訂單中。 很明顯, 訂單無法更改 獲得可靠的結果。 如果該行 9 我們在問 如果在調用腳本時有一個數字作為參數。 如果沒有參數,我們將在鍵盤上按照第11到13行中的指令在鍵盤上請求它。如果使用數字調用腳本以計算第15行的順序,則將此參數分配給變量«ndni»。
在第23行中,我們通過的參數引用模函數 變量“ ndni”,它已作為bash中的參數收集,或通過鍵盤作為輸入。 在第24行中,該函數的返回被分配給變量«mod»。 在25 m線上根據模塊和子字符串的計算,我們顯示與位置相對應的數字,破折號和字母.
測試我們的DNI腳本
$ ./dni 12345678 12345678-Z
好吧,
$ ./dni Cálculo DNI, Introduce número
我們所有的腳本都應為作者提供一個參數“ -a”,並為幫助和語法提供一個“ -h”參數。 正如我們在之前的文章中所看到的,或者我留給您看,是為了不使代碼變得更加繁瑣。
我希望並希望您一直對本文感興趣。
您好,有人可以幫我嗎,我需要在舊台式機上安裝lubuntu,但它不允許我通過USB安裝並且DVD驅動器已損壞,我只想安裝 http://www.plop.at 到Ubuntu 16.04 LTS,但我不知道該怎麼做。 謝謝
奧馬爾
如您所述,情況不是很樂觀:不允許使用USB並且DVD驅動器已損壞。 但是您還評論說“計算機是舊的”,這意味著您有一台新計算機。 嘗試將安裝從工作計算機上放置到硬盤驅動器上,然後嘗試從該驅動器上安裝它。
問候
您有一台電腦和一個可移動的盒子嗎? 將舊計算機的硬盤驅動器安裝在可移動USB盒中,然後啟動安裝盤。
Linux和Unix在啟動級別不考慮硬件,使用它可以在安裝了Linux的情況下再次放置磁盤。
非常感謝,我告訴你,我要做的是在同一操作系統下從Ubuntu 16.04轉到Lubuntu 16.04,這就是我的舊計算機運行良好的方式,來自哥倫比亞的問候。