在 bash 脚本中接受多行输入

Jon*_*ndi 4 unix linux bash awk sed

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

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

示例,脚本运行部分:

Enter the domain names :
Run Code Online (Sandbox Code Playgroud)

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

domain1.com
domain2.com
domain3.com
domain4.com
Run Code Online (Sandbox Code Playgroud)

是否可以?。

sat*_*sat 8

使用loop

#!/bin/bash

arrDomains=()
echo "Enter the domain names :"

while read domain
do
    arrDomains+=($domain)
    # do processing with each domain
done

echo "Domain List : ${arrDomains[@]}"
Run Code Online (Sandbox Code Playgroud)

输入所有域名后,按ctrl + D结束输入。


Joh*_*024 5

是的,您可以:使用readarray

printf "Enter the domain names: "
readarray -t arr
# Do something...
declare -p arr
Run Code Online (Sandbox Code Playgroud)

上面的最后一行只记录了 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")'
Run Code Online (Sandbox Code Playgroud)