
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2.2 实践步骤
在该范例中,我们将编写一个小型的shell脚本,以演示返回值的作用、如何读取返回值以及如何解释返回值。让我们开始吧:
1.在编写代码之前,我们必须研究脚本中程序会使用哪些返回值。执行以下命令,并记录得到的返回值。test命令是一个小型实用程序,用于测试某些条件是否成立。在这个例子中,我们将使用test命令来检测一个文件或目录是否存在。选项-e表示存在。test命令不会给我们任何输出信息,它只是以某个返回值退出:

2.现在,我们知道test程序会返回哪些值了(0表示文件或目录存在,除此之外,返回1),我们可以开始编写脚本了。在一个文件中编写以下代码,并将文件保存为exist.sh。你也可以通过访问https://github.com/PacktPublishing/Linux-System-Programming-Techniques/blob/master/ch2/exist.sh下载代码文件。该shell脚本使用test命令检测一个指定的文件或目录是否存在:

3.你需要执行以下命令为shell脚本添加可执行权限:

4.尝试运行脚本。我们尝试使用已存在的目录和不存在的目录运行脚本。我们还会在每次脚本运行后检查其退出码:

5.现在,我们知道该脚本可以正常工作,并且能够返回正确的退出码。我们可以编写一行程序来使用这个脚本。例如,通过echo命令打印一行文字以描述文件或目录是否存在:

6.我们还可以编写一个更复杂的一行程序—利用脚本中一个特殊的错误码3,该错误码表示“文件未发现”。请注意,你不需要在第二行起始位置输入>。当你在第一行结束位置添加反斜杠时,shell会自动插入这个字符,表示继续编辑一个较长的行:
