Linuxシェルスクリプト:ユーザーが入力プロンプトに変数名を提供できるようにする

Linuxシェルスクリプト:ユーザーが入力プロンプトに変数名を提供できるようにする

私はLinuxターミナル用のシェルスクリプトを書いています。プロンプトで変数名を入力できるようにしたいです。たとえば、

テスト.sh:

 test="Monkey in the middle..."
 read -p "Enter input: " input
 echo $input

出力:

 Enter input: $test
 $test

read -pスクリプトのプロンプト部分に「$test」と入力し、スクリプトが今のように「$test」をエコーするのではなく、最後に「Monkey in the middle...」をエコーするようにしたいと思います。

どうすればいいですか?



修正する:

こことここで私に提供された答えを使用してこのスレッド(貢献者と評論家に感謝します!)私は次の文を一つにまとめましたが、私は完璧にフィットしました。

newvariable="$(eval echo $input)" 

evalを使用すると、セキュリティリスクが発生する可能性があるという警告が複数回受信されました。このソリューションを選択した場合は、この点に留意してください。

ベストアンサー1

変える

echo "$input"

努力する

eval echo "$input"

bashに限定されず、/bin/shで動作します!

これはevalユーザーが提供したものだけを実行するため、重大なセキュリティリスクを引き起こします。この場合、シェルは文字列を解釈し$inputて実行します。しかし、ユーザーが入力するとどうなりますか? レンダリングされます。これは注意してください。$testevalecho $test$test; rm -rf *evalecho $test; rm -rf *

おすすめ記事