我正在爲Linux終端編寫一個shell腳本。我希望能夠將變量輸入到提示中。例如Linux shell腳本:允許用戶在輸入中使用變量
test.sh:
test="Monkey in the middle..."
read -p "Enter input: " input
echo $input
輸出:
Enter input: $test
$test
我希望能夠輸入 「$測試」(讀-p)提示段時的腳本,並且在末尾有腳本回聲「中間的猴子......」,而不是像現在這樣回顯「$ test」。
我該怎麼做呢?
UPDATE:(!非常感謝貢獻者和評論家)
使用提供給我在這裏和this thread答案,我設法拼湊出這行很努力以及對我來說:
newvariable="$(eval echo $input)"
是的,建議,我被警告過一次,使用eval可能構成安全風險。記住,如果你選擇這個解決方案。
如此疲憊的大腦不應該編程。我將刪除評論,但是當您使用'eval'時,問題會變得嚴重。既然你選擇了'eval'加命令替換,保護自己不受意外插入的影響應該成爲首要任務(並且會非常棘手 - 我不認爲我會確保我能夠正確地完成它)。謹防!你被警告過。用戶可能會是惡毒的,有時會是偶然的。 –
@JonathanLeffler感謝您的警告。我正在shell中創建一個buckup腳本,我將最終與任何想要使用它的人分享。它們可以輸入到提示符中的變量將簡單地允許它們將20個字符長的字符串(例如日期/時間戳和PC /平臺的名稱)替換爲2-3個字符長的變量,以便它們不必在每次運行時鍵入它們劇本。除非用戶決定對自己的系統執行攻擊,否則對系統的風險是不存在的。 – thebunnyrules
@JonathanLeffler你不是第一個警告我使用eval的人。據我自己的知識,使用它有哪些安全風險?我唯一能想到的是用戶可以輸入有害的代碼到提示中,但是爲了做到這一點,他們需要以sudo的方式運行腳本,如果他們已經可以做到這一點,他們可以直接在bash中運行代碼。有沒有其他的威脅可以構成我沒有想到的? – thebunnyrules