簡體   English   中英

bash腳本讀取用戶輸入並將其導出為變量

[英]bash script read user input and export it as variable

我正在嘗試使腳本通過openssl生成csr文件。 我想提示用戶提供其他alt_names。 Openssl.cnf是靜態的,不能在內部做很多事情。 如果用戶需要1個SAN也可以,所以我可以通過系統變量將其導出。

[alt_names] 
DNS.1=${ENV::SAN}

如果我需要更多的SAN,則config下的語法如下:

[alt_names]
DNS.1=test.example.com
DNS.2=www.example.com
IP.1=1.1.1.1
IP.2-1.1.2.2

因此,我找不到任何其他示例,該示例如何自動實現它本身對openssl命令的期望,並將其粘貼到cli中,如下所示:

openssl x509 -req -extfile <(printf "subjectAltName=DNS:www.exmple.com,DNS:test.example.com,IP:1.1.1.1") -days 365 

我當時想在外殼中使用讀取功能來提示用戶提供DNS:xxxxxx或IP:xxxx的完整內容,直到用戶按[enter]鍵為止。我發現了一些示例,但無法弄清楚如何將其導出到openssl命令中。

我發現的示例之一是:

    array=()
while IFS= read -r -p "Next item (end with an empty line): " line; do
    [[ $line ]] || break  # break if line is empty
    array+=("$line")
done

printf '%s
' "Items read:"
printf '  «%s»
' "${array[@]}"

實際上,我認為我已經解決了這個問題……我在上面的示例中使用了讀取函數和數組,這正是我想要在此處實現的目標。

"openssl x509 -req -extfile <(printf "subjectAltName=${array[@]}") -days 365 "

如果有人有更好的解決方案,請隨時在此處提交。

謝謝

皮特

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM