Linux

讀取使用者的伺服器列表?

  • July 27, 2018

如何讀取使用者輸入的伺服器列表並將其保存到變數中?

例子:

Please enter list of server:
(user will enter following:)
abc
def
ghi
END

$echo $variable

abc
def
ghi

我希望它在 shell 腳本中執行。如果我在 shell 腳本中使用以下內容:

read -d '' x <<-EOF

它給了我一個錯誤:

line 2: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')

請建議我如何將它合併到 shell 腳本中?

你可以做

servers=()                     # declare an empty array
# allow empty input or the string "END" to terminate the loop
while IFS= read -r server && [[ -n $server && $server != "END" ]]; do
   servers+=( "$server" )     # append to the array
done
declare -p servers             # display the array

這也允許使用者手動輸入條目或從文件重定向。

腳本或程序要求使用者以互動方式提供項目列表(實際上就像窮人的文本編輯器一樣,沒有撤消)是非常罕見的。

腳本或程序從準備好的文件中讀取項目列表更為常見:

#!/bin/sh

while IFS= read -r item; do
   printf 'The item given by the user is %s\n' "$item"
done

然後該腳本將用作

$ ./script.sh <myfile

wheremyfile將是一個文本文件,其中包含腳本將讀取並執行某些操作的行。

可以在沒有輸入文件的情況下執行此腳本。然後必須手動輸入輸入。要發出此手動輸入結束的信號,請按Ctrl+D

引用自:https://unix.stackexchange.com/questions/458650