了解Bash读取和写入数据的不同方式,以及何时使用每种方法。当您在Bash中编写脚本时,有时您需要从文件读取数据或将数据写入文件。有时该文件可能包含配置选项,有时该文件是您的用户使用您的应用程序创建的数据。每种语言处理此任务的方式略有不同,本文演示了如何使用Bash和其他POSIXshell处理数据文件。安装Bash如果您使用的是Linux,您可能已经安装了Bash。如果没有,您可以在软件存储库中找到它。在macOS上,您可以使用默认终端Bash或Zsh,具体取决于您运行的macOS版本。在Windows上,有多种体验Bash的方法,包括Microsoft官方支持的WindowsLinux子系统(WSL)。安装Bash后,打开您最喜欢的文本编辑器并准备开始。用Bash读取文件Bash除了是一个shell,还是一种脚本语言。有几种方法可以从Bash中读取数据。您可以创建数据流并解析输出,也可以将数据加载到内存中。这两种都是获取信息的有效方式,但每种方式都有相当具体的用例。Bash中的源文件当您在Bash中“获取”一个文件时,您是在告诉Bash读取该文件的内容,期望它包含有效数据,Bash可以将这些数据放入它构建的数据模型中。您不想引用旧文件中的数据,但可以使用此方法读取配置文件和函数。(LCTT译注:在Bash中,可以通过source或.命令读入一个文件,这种行为称为“sourcing”,英文原意是“一次性(试用)采购”、“寻找供应商”、“获得"等,考虑到Bash的语境和发音,我建议可以翻译成"quote",否则可能不合适,供大家讨论和参考-wxy)例如新建一个名为example.sh的文件,然后输入以下内容:#!/bin/shgreetopensource.comecho"Themeaningoflifeis$var"运行这段代码,看看它是否失败:$bash./example.sh./example.sh:line3:greet:commandnotfound生命的意义是Bash没有一个叫greet的命令,所以它不能执行那一行,也没有一个叫var的变量记录,所以这个文件没有意义。为了解决这个问题,创建一个名为include.sh的文件:greet(){echo"Hello${1}"}var=42修改你的example.sh脚本并添加一个source命令:#!/bin/shsourceinclude.shgreetopensource.comecho"Themeaningoflifeis$var"运行脚本,你可以看到它有效:$bash./example.shHelloopensource.comThemeaningoflifeis42greet该命令被带入你的shell环境,因为它定义在include.sh文件,它甚至可以识别参数(在本例中为opensource.com)。变量var也被设置和导入。在Bash中解析文件将数据“输入”到Bash的另一种方法是将其解析为数据流。有很多方法可以做到这一点。您可以使用grep或cat或任何可以获取数据并将其通过管道传输到标准输出的命令。或者,您可以使用Bash中内置的东西:重定向。重定向本身不是很有用,所以在这个例子中,我还使用内置的echo命令来打印重定向的结果:#!/bin/shecho$(
