欢迎来到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关闭文件。
要运行脚本,请输入以下命令行替换为您的名称。
sh grentme.sh蒂姆
如果我用我的名字运行脚本,它会显示“hello gary”单词。
第一行具有#!/ 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。
如下所示运行脚本(将名字替换为你自己的):
sh grentme.sh gary newell
当您运行脚本时,它将简单地说,“Hello Gary”(或希望“您好”,无论您的名字都是什么)。
在$符号基本上显示到echo命令后,使用第一个参数。如果您用2美元的价格替换1美元,那么它将显示“Hello Newell”(或您的姓氏是什么)。您还可以在1美元后添加2美元以获取全名。
使用多个参数运行它将在与输入的顺序对应的位置中显示它们。
顺便提一下,如果您用3美元的价格取代了2美元并用2个参数运行脚本,则输出只需“Hello”。
如何显示使用的参数个数
可以显示和处理实际输入的参数数,稍后的教程将向您展示如何使用参数计数以获取验证目的。
要显示输入的参数数,请打开grentme.sh脚本(Nano Greatme.sh),然后修改文本如下:
#!/ bin / bash
echo“你输入了$#names”
echo“Hello $ @”
按Ctrl.和O.保存脚本和Ctrl.和X退出纳米。
2nd Line上的$#显示输入的参数数。
到目前为止,所有这一切都是新颖但不是很有用。谁需要一个简单地显示“hello”的脚本?
echo语句与输入参数
Echo语句的真实用法是为用户提供详细和有意义的输出。如果您可以想象您要做一些复杂的事情,涉及一些严重的号码次谐起和文件/文件夹操作,可以向用户展示发生的情况是有用的。
相比之下,输入参数使您的脚本交互。没有输入参数,您需要几十个脚本,都做得非常相似,但名称略有不同。
通过所有这一切,还有一些其他有用的输入参数,它是一个很好的想法,我将在一个代码片段中包含它们。
打开您的Holdme.sh脚本并修改如下:
#!/ bin / bash
echo“filename:$ 0”
echo“Process ID:$$”
回声“---------------------------”
echo“你输入了$#names”
echo“Hello $ @”
按Ctrl.和O.保存文件和Ctrl.和X退出。
现在,运行脚本(替换为您的姓名)。
sh grentme.sh.
这次脚本显示以下内容:
filename:greetme.sh.
流程ID:18595
-------------------------------
你输入了2个名字
你好Gary Newell.
脚本的第一行上的$ 0显示您正在运行的脚本的名称。请注意,它是美元零而不是美元o。
第二行的$$显示您正在运行的脚本的进程ID。为什么这有用?如果在前台运行脚本,则只需按下即可取消它Ctrl.和C。如果您在后台运行脚本,它开始循环并在遍及和完成同样的事情或开始造成您的系统损坏,您需要杀死它。
要杀死在后台运行的脚本,您需要脚本的进程ID。如果脚本将流程ID作为其输出的一部分给出了进程ID,则不会好吗?(关于ps和kill命令)
包裹......
最后,在我们完成本主题之前,重要的是讨论输出到的位置。每次脚本都运行到目前为止,屏幕上都会显示输出。
将要写入输出文件的脚本输出非常常见。要执行此操作,请按如下方式执行脚本:
sh greatme.sh gary> grentme.log
上面命令中的>符号将文本“Hello Gary”输出到名为GreetMe.log的文件。
每次使用>符号运行脚本时,它会覆盖输出文件的内容。如果您更愿意将文件追加,请替换>> >>。
您现在应该能够将文本写入屏幕并接受输入参数。