满足后 要求 为 能够运行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行 从脚本和步骤到 解释你的代码. 回音 与 参数“ -e” 让我们来展示 下一行字符,我们已经在 第7行并分配给变量«ret».
第13行:我显示了子字符串(子串),如第8行所述 从位置12开始. 总是从位置0开始计数.
第14行:从 CHAIN变量的位置12,我显示了5的段。 正如您将要验证的,这对应于 子字符串“ Linux”.
第15行:我撰写了一个 用引号引起来的新字符串 我从《我学习》开始,接着是CHAIN变量的子字符串 从第31位开始,取7分:这对应于 «Ubunlog».
回发功能
使用Bash的返回机制是由“ 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,这就是我的旧计算机运行良好的方式,来自哥伦比亚的问候。