read/source/mapfile命令
Bash是一种相当强大的编程语言,也很容易上手。这里有一些鲜为人知但很有用的bash命令。
这些命令可以帮助您编写清晰、易于维护的shell脚本。毕竟它几乎是您打开终端时最经常看到的Shell命令。
在Bash有一些您可能不知道的命令,即使您对Bash的使用相当熟练。但是这些命令都是非常目的性。
在本教程中,我们将说明如何使用read命令,mapfile命令和source命令在bash脚本中的实际应用。
read 命令询问用户的输入
read命令用于接受用户输入,并将输入字符存储在变量。当你在终端运行命令read name它将会等待用户的输入,当用户输入完成后将值存储在name变量。
您还可以使用read命令的-p选项,打印一条提示消息告知用户当前输入在做什么操作。
例如命令read -p "What is your name? " name将会打印消息"What is your name? "询问用户并接受用户的输入。
#!/usr/bin/env bash
read -p "What is your name? " name
echo "Your name is ${name}!"mapfile 命令映射文件数组
mapfile命令将文件的内容映射为Bash数组,mapfile命令只要在文件中遇到换行符,就会创建一个数组元素。
mapfile命令默认从标准输入读取参数,但我们可以使用Shell的标准输入重定向符号<,使用文件作为标准输入。
例如命令mapfile file_var < file.txt将file.txt文件转换为Bash数组并赋值给分配给file_var变量。
Line 1
Line 2
Line 3
Line 4
Line 5#!/usr/bin/env bash
mapfile file_var < file.txt
for i in "${file_var[@]}"; do
echo -n "${i}"
donesource 命令加载变量函数
source命令用于在当前Shell运行文件中的命令,source命令可用于将函数,变量和配置文件加载当前Shell。
source是Bash内置的命令,Bash是Linux和UNIX操作系统最流行Shell之一。source命令之间的行为可能略有不同。
假设你当前目录存在文件config.sh。文件包含两行Shell代码,行name="myfreax"设置变量name。echo "Hello ${name}!"运行echo命令打印变量name的值。
现在如果你想使用config.sh的name变量,可以运行命令source config.sh将name变量加载到当前Shell会话。
你也可以使用source命令的别名.。运行命令. config.sh将name变量加载到当前Shell会话。
source config.sh
#eq
. config.shname="myfreax"
echo "Hello ${name}!"结论
至此,你了解如何使用read命令询问用户的输入。使用mapfile命令将文件的内容映射为Bash数组。source命令将函数,变量和配置文件加载当前Shell。
如果您有任何疑问或反馈,请随时在下面评论。