私は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
て実行します。しかし、ユーザーが入力するとどうなりますか? レンダリングされます。これは注意してください。$test
eval
echo $test
$test; rm -rf *
eval
echo $test; rm -rf *