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
变量。
#!/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"
设置变量name
。echo "Hello ${name}!"
运行echo命令打印变量name
的值。
现在如果你想使用config.sh
的name
变量,可以运行命令source config.sh
将name
变量加载到当前Shell会话。
你也可以使用source命令的别名.
。运行命令. config.sh
将name
变量加载到当前Shell会话。
source config.sh
#eq
. config.sh
结论
至此,你了解如何使用read
命令询问用户的输入。使用mapfile
命令将文件的内容映射为Bash数组。source命令将函数,变量和配置文件加载当前Shell。
如果您有任何疑问或反馈,请随时在下面评论。