Android和Linux操作系统在过去几年变得非常流行。由于它们的开源性质,成本是合理的,值得庆幸的是,大量的工程师已经加入到将这些操作系统移植到几乎所有可以想象的平台的努力中来。它们的广泛使用使得嵌入式开发人员几乎不可避免地会在某个时候投入开发基于这些系统的系统。
在Linux环境中进行开发时,最有用的工具之一是使用shell脚本。脚本可以帮助设置环境变量,执行重复和复杂的任务,并确保将错误保持在最低限度。由于脚本是从终端内部运行的,任何可以从终端手动执行的命令或功能也可以自动化!
创建脚本非常直接,它可以通过打开诸如 gedit 之类的编辑器或通过诸如 VI 之类的终端编辑器来创建。 最常见的脚本类型是 bash 脚本。 这些脚本通常与 .sh 扩展名相关联,但根本不需要包含扩展名! 任何脚本的顶部都应包含在第一行 #!/bin/bash. 这告诉了应该使用什么解释器来运行脚本。
除此之外,可以自定义脚本以满足嵌入式开发人员的需求。一个好的第一个脚本,就像任何程序一样,是创建一个“Hello World”脚本。除了解释器说明符之外,clear 用于清除任何先前消息的终端,而 echo 用于输出文本。
创建脚本后,可以使用终端运行它。 但是,立即将脚本作为 ./scripts.sh 运行通常会导致错误。 此错误是由于文件权限引起的。 这可以通过首先输入命令 chmod +x script_name.sh 来解决。 这将添加脚本以具有可执行权限。 然后可以通过键入 ./script_name.sh 来运行该脚本。
现在已经运行了第一个脚本,真正的问题归结为在脚本中可以做什么? 可以运行哪些命令和功能? 答案是可以从终端运行或执行的任何东西! 脚本可以使用 cd 来更改目录。 也许脚本需要创建一个目录并移入其中。 不是问题! 该脚本可以包含 mkdir 命令,然后可以使用 cd 遍历新目录。 嵌入式开发人员甚至可能希望将创建的目录添加到路径变量中。 这可以使用导出命令来完成。
为嵌入式系统开发软件时,有时可能需要模块化脚本。也许只需要编译内核,有时需要编译内核,然后链接一些外部库。可以创建脚本来处理这些单独的项目,然后创建一个脚本来根据构建需要调用这些单独的脚本!这是一个相对直截了当的过程,它汇集了到目前为止已经展示的所有示例。
就像在常规的计算机程序中一样,可能需要使用变量来跟踪数据。无论这是字符串还是数字数据,脚本都可以像标准应用程序一样访问变量。在脚本环境中,就像在任何常规计算机语言中一样,对变量名也有一些要求。这些规则与c语言的规则非常相似。首先,变量必须以字母开头。其次,变量不能包含空格,而是应该使用下划线来桥接名称。第三,变量名不应该是bash解释器理解的关键字或保留字。这将导致混乱和不一致或不正确的结果。最后,变量名不应包含任何标点符号。遵循这些规则将确保嵌入式开发人员享受无bug的脚本编写体验。
现在创建一个变量非常简单。与C #不同,这里没有类型说明符。在脚本中,可以通过命名变量并将其设置为一个值来声明变量。也可以从脚本中访问系统变量和信息。例如,可以使用$HOSTNAME来访问计算机主机名。还可以存储日期和当前用户信息。
有了这些信息,嵌入式开发人员现在可以对开始自动化软件开发过程所需的必要命令有一个基本的了解。虽然这里提供的信息是一个好的开始,但请留意“Shell Scripting 102”,它将详细介绍如何控制脚本执行流程和接受用户信息。