linux - 在 bash 脚本中接受多行输入

标签 linux bash unix awk sed

我正在编写 bash 脚本。我遇到的悬而未决的问题是如何一次接受来自用户的多个输入。

具体来说,当脚本要求输入时,用户必须能够输入多个域名。

例子,脚本运行部分:

Enter the domain names :

并且用户必须能够通过手动输入每个域名来逐行输入域名,或者他/她只需从某处复制域名列表并将其粘贴到脚本输入中,如下所示:

domain1.com
domain2.com
domain3.com
domain4.com

这可能吗?

最佳答案

是的,你可以:使用readarray:

printf "Enter the domain names: "
readarray -t arr
# Do something...
declare -p arr

上面的最后一行只是记录了 bash 现在视为数组的内容。

用户可以键入或复制并粘贴数组名称。当用户完成后,他在一行的开头键入 Ctrl-D

例子:

$ bash script
Enter the domain names: domain1.com
domain2.com
domain3.com
domain4.com
declare -a arr='([0]="domain1.com" [1]="domain2.com" [2]="domain3.com" [3]="domain4.com")'

关于linux - 在 bash 脚本中接受多行输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38811735/

相关文章:

linux - docker: executable file not found in $PATH 解决办法不改变CMD

Bash:不是绝对的脚本#!解释器?

c - 频繁调用 isatty() 对性能的影响

c - a.out 中的内核空间

shell - Unix for 循环跳过脚本中的一个值,在命令行中正常工作

linux - 如何在命令中插入循环

c - 与其他 Linux 发行版相比,fork() 在 Ubuntu 上的工作方式是否不同?

linux - 比较两个目录的相等性

bash - 如何使用 Mac 命令行编写多个文件重命名脚本

bash - 读取命令不等待输入