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.txtfile.txt文件转换为Bash数组并赋值给分配给file_var变量。

Line 1
Line 2
Line 3
Line 4
Line 5
file.txt
#!/usr/bin/env bash
mapfile file_var < file.txt

for i in "${file_var[@]}"; do
	echo -n "${i}"
done

source 命令加载变量函数

source命令用于在当前Shell运行文件中的命令,source命令可用于将函数,变量和配置文件加载当前Shell。

source是Bash内置的命令,Bash是Linux和UNIX操作系统最流行Shell之一。source命令之间的行为可能略有不同。

假设你当前目录存在文件config.sh。文件包含两行Shell代码,行name="myfreax"设置变量nameecho "Hello ${name}!"运行echo命令打印变量name的值。

现在如果你想使用config.shname变量,可以运行命令source config.shname变量加载到当前Shell会话。

你也可以使用source命令的别名.。运行命令. config.shname变量加载到当前Shell会话。

source config.sh
#eq
. config.sh
name="myfreax"
echo "Hello ${name}!"
config.sh

结论

至此,你了解如何使用read命令询问用户的输入。使用mapfile命令将文件的内容映射为Bash数组。source命令将函数,变量和配置文件加载当前Shell。

如果您有任何疑问或反馈,请随时在下面评论。