BASH输入参数的初学者指南

将信息传递给您的Bash脚本

欢迎来到Bash系列的第二部分初学者指南,这是独一无二的,因为它是初学者为初学者撰写的唯一Bash教程。

本指南的读者将建立他们的知识,并且希望到最后,将能够编写一些相当聪明的剧本。

我们上次涵盖了创建你的第一个脚本这简单地展示了“Hello World”的单词。它涵盖了文本编辑器等主题,如何打开终端窗口,将脚本放在哪里,如何显示“Hello World”的单词和一些更精细的点,如引号(“”)。

本节介绍了输入参数。有其他的指南这教导了这种东西,但频繁地,他们跳进了一些相当低的东西,也许提供了太多信息。

参数脚本添加个性化

在最后一个教程中的“Hello World”脚本中,它都非常静止。脚本根本没有真正做。

我们如何改进“Hello World”脚本?

那个迎接运行它的人的脚本怎么样?而不是说“你好世界”,它会说“你好加里”,“Hello Tim”或“Hello Dolly”。

没有接受输入参数的能力,我们需要写三个脚本“hellogary.sh”,“hellotim.sh”和“hellodolly.sh”。

如何创建一个参数

通过允许我们的脚本读取输入参数,我们可以使用一个脚本迎接任何人。

要执行此操作,请打开终端窗口(Ctrl.+alt.+T.)通过键入以下内容并导航到脚本文件夹:(关于CD命令

CD脚本

通过键入以下内容,创建一个名为greetme.sh的新脚本:(关于触摸命令

触摸greatme.sh.

通过键入以下内容打开您喜欢的编辑器中的脚本:(关于Nano命令

nano grentme.sh.

在Nano中输入以下文本:

#!/ bin / bash
echo“Hello $ @”

Ctrl.O.保存文件然后Ctrl.X关闭文件。

带参数的Linux基本Bash脚本

要运行脚本,请输入以下命令行替换为您的名称。

sh grentme.sh蒂姆

如果我用我的名字运行脚本,它会显示“hello gary”单词。

Linux使用参数运行基本脚本

第一行具有#!/ bin / bash行,用于将文件标识为bash脚本。

第二行使用echo语句回显单词hello,然后出现奇怪的$@表示法。(关于echo命令

$ @展开以显示与脚本名称一起输入的每个参数。因此,如果您键入“sh holdme.sh tim”,将显示“hello tim”单词。如果您键入“grentme.sh tim smith”,则将显示“hello tim smith”单词。

使用Echo命令

汉语脚本可能很好,只是使用名字说哈夫。没有人说,“你好加里·芬德,”当他们见到某人时,但他们可能会说,“你好加里,”。

让我们更改脚本,以便它只是使用第一个参数。通过键入以下内容,在nano中打开replme.sh脚本:

nano grentme.sh.

更改脚本,以便它读取如下:

#!/ bin / bash
回声“你好1美元”

按按键保存脚本Ctrl.O.然后通过按下Ctrl.X。

Linux Bash脚本与单个参数

如下所示运行脚本(将名字替换为你自己的):

sh grentme.sh gary newell

当您运行脚本时,它将简单地说,“Hello Gary”(或希望“您好”,无论您的名字都是什么)。

Linux运行Bash脚本与单个参数

在$符号基本上显示到echo命令后,使用第一个参数。如果您用2美元的价格替换1美元,那么它将显示“Hello Newell”(或您的姓氏是什么)。您还可以在1美元后添加2美元以获取全名。

具有多个参数的Linux Bash脚本

使用多个参数运行它将在与输入的顺序对应的位置中显示它们。

具有多个参数的Linux运行脚本

顺便提一下,如果您用3美元的价格取代了2美元并用2个参数运行脚本,则输出只需“Hello”。

如何显示使用的参数个数

可以显示和处理实际输入的参数数,稍后的教程将向您展示如何使用参数计数以获取验证目的。

要显示输入的参数数,请打开grentme.sh脚本(Nano Greatme.sh),然后修改文本如下:

#!/ bin / bash
echo“你输入了$#names”
echo“Hello $ @”

Ctrl.O.保存脚本和Ctrl.X退出纳米。

Linux Bash脚本计数参数

2nd Line上的$#显示输入的参数数。

到目前为止,所有这一切都是新颖但不是很有用。谁需要一个简单地显示“hello”的脚本?

Linux运行Bash脚本计数参数

echo语句与输入参数

Echo语句的真实用法是为用户提供详细和有意义的输出。如果您可以想象您要做一些复杂的事情,涉及一些严重的号码次谐起和文件/文件夹操作,可以向用户展示发生的情况是有用的。

相比之下,输入参数使您的脚本交互。没有输入参数,您需要几十个脚本,都做得非常相似,但名称略有不同。

通过所有这一切,还有一些其他有用的输入参数,它是一个很好的想法,我将在一个代码片段中包含它们。

打开您的Holdme.sh脚本并修改如下:

#!/ bin / bash
echo“filename:$ 0”
echo“Process ID:$$”
回声“---------------------------”
echo“你输入了$#names”
echo“Hello $ @”

Ctrl.O.保存文件和Ctrl.X退出。

Linux Bash脚本附加信息

现在,运行脚本(替换为您的姓名)。

sh grentme.sh.

这次脚本显示以下内容:

filename:greetme.sh.
流程ID:18595
-------------------------------
你输入了2个名字
你好Gary Newell.
Linux Bash运行脚本附加信息

脚本的第一行上的$ 0显示您正在运行的脚本的名称。请注意,它是美元零而不是美元o。

第二行的$$显示您正在运行的脚本的进程ID。为什么这有用?如果在前台运行脚本,则只需按下即可取消它Ctrl.C。如果您在后台运行脚本,它开始循环并在遍及和完成同样的事情或开始造成您的系统损坏,您需要杀死它。

要杀死在后台运行的脚本,您需要脚本的进程ID。如果脚本将流程ID作为其输出的一部分给出了进程ID,则不会好吗?(关于ps和kill命令

包裹......

最后,在我们完成本主题之前,重要的是讨论输出到的位置。每次脚本都运行到目前为止,屏幕上都会显示输出。

将要写入输出文件的脚本输出非常常见。要执行此操作,请按如下方式执行脚本:

sh greatme.sh gary> grentme.log

上面命令中的>符号将文本“Hello Gary”输出到名为GreetMe.log的文件。

每次使用>符号运行脚本时,它会覆盖输出文件的内容。如果您更愿意将文件追加,请替换>> >>。

您现在应该能够将文本写入屏幕并接受输入参数。

此页面是否有帮助?