互联网上有很多指南显示如何使用BASH创建Shell脚本,本指南旨在给出一个稍微不同的旋转,因为它是由具有非常少的shell脚本编写经验的人编写的。
现在你可能会认为这是一个愚蠢的想法,但我发现有些导游会跟你说话,好像你已经是专家一样,其他导游需要花很长时间来追逐。
虽然我的LINUX / UNIX shell脚本编写经验有限,但我是一名软件开发人员,而且我很熟悉PERL,PHP和VBScript等脚本语言。
本指南的要点是,您将学习我学习的内容以及我收到的任何我将传递给您的信息。
入门
显然有很多理论可以直接传递给你,比如描述不同类型的shell以及使用BASH而不是KSH和CSH的优势。
大多数人在学习新东西的时候都想跳进去,先从一些实践课开始,考虑到这一点,我不会厌倦你现在不重要的琐事。
遵循本指南所需的只是文本编辑器和运行BASH的终端(大多数Linux发行版上的默认shell)。
文字编辑
我读过的其他指南建议您需要一个文本编辑器,其中包括命令的颜色编码,推荐的编辑器是VIM或EMACS。
颜色编码很好,因为它在您键入命令时突出显示命令,但对于绝对的初学者,您可以花费前几周学习VIM和EMACS而无需编写任何代码。
在两者中,我更喜欢EMACS,但说实话,我更喜欢使用简单的编辑器,如nano,gedit或leafpad。
如果您在自己的计算机上编写脚本,并且您知道您将始终可以访问图形环境,那么您可以选择最适合您的编辑器,它可以是图形,例如GEdit,也可以是直接在终端中运行的编辑器如nano或vim。
出于本指南的目的,我将使用nano,因为它本身安装在大多数Linux发行版上,因此您可能有权访问它。
打开终端窗口
如果您使用Linux发行版与Linux Mint或Ubuntu等图形桌面,则可以通过按CTRL + ALT + T打开终端窗口。
在哪里放你的脚本
出于本教程的目的,您可以将脚本放在主文件夹下的文件夹中。
在终端窗口中,通过键入以下命令确保您在主文件夹中:
cd~
cd命令代表更改目录,代字号(〜)是主文件夹的快捷方式。
您可以通过键入以下命令来检查您是否在正确的位置:
PWD
pwd命令将告诉您当前的工作目录(您在目录树中的位置)。在我的情况下它返回/ home / gary。
现在显然你不想将你的脚本直接放到主文件夹中,所以通过输入以下命令创建一个名为scripts的文件夹。
mkdir脚本
键入以下命令切换到新脚本文件夹:
你的第一个脚本
在习惯学习如何编程以使第一个程序只输出“Hello World”这个词时。
在脚本文件夹中输入以下命令:
nano helloworld.sh
现在在nano窗口中输入以下代码。
#!/ bin / bash echo“hello world”
按CTRL + O保存文件,按CTRL + X退出nano。
脚本本身如下:
#!/ bin / bash需要包含在您编写的所有脚本的顶部,因为它允许解释器和操作系统知道如何处理该文件。基本上只记得把它放入并忘记你为什么这样做。
第二行有一个名为echo的命令,它输出紧跟在其后面的文本。
请注意,如果要显示多个单词,则需要在单词周围使用双引号(“)。
您现在可以通过键入以下命令来运行该脚本:
sh helloworld.sh
应该出现“你好世界”这个词。
另一种运行脚本的方法如下:
./helloworld.sh
如果您立即在终端中运行该命令,则可能会出现权限错误。
要以这种方式授予运行脚本的权限,请键入以下内容:
sudo chmod + x helloworld.sh
那么实际发生了什么?为什么你能够在不改变权限的情况下运行sh helloworld.sh但运行./helloworld.sh会导致问题?
第一个方法加载bash解释器,它将helloworld.sh作为输入,并确定如何处理它。 bash解释器已经具有运行权限,只需要在脚本中运行命令。
第二种方法允许操作系统解决如何处理脚本,因此需要可执行位才能执行。
上面的脚本没问题但是如果你想显示引号会怎么样?
有多种方法可以实现这一目标。例如,您可以在引号前加一个反斜杠,如下所示:
回声“你好世界”
这将产生输出“hello world”。
等一下,如果你想要显示“你好世界”怎么办?
那么你也可以逃脱逃脱角色
echo “”hello world “”
这将产生输出“hello world”。
现在我知道你在想什么。但是我真的想要显示“”hello world “”
对所有这些转义字符使用echo可能会非常愚蠢。您可以使用另一个名为printf的命令。
例如:
printf'%s n''“”hello world “”'
请注意,我们要显示的文本位于单引号之间。 printf命令从脚本输出文本。 %s表示它将显示一个字符串, n输出一个新行。
摘要
我们在第一部分中并未真正涵盖太多理由,但希望您的第一个脚本能够正常工作。
在下一部分中,我们将着眼于改进hello world脚本以显示不同颜色的文本,接受和处理输入参数,变量和注释代码。