Linux
讀取使用者的伺服器列表?
如何讀取使用者輸入的伺服器列表並將其保存到變數中?
例子:
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
where
myfile
將是一個文本文件,其中包含腳本將讀取並執行某些操作的行。可以在沒有輸入文件的情況下執行此腳本。然後必須手動輸入輸入。要發出此手動輸入結束的信號,請按
Ctrl+D
。