Linux shell 脚本:允许用户在输入提示中提供变量名

the*_*les 5 shell-script

我正在为 linux 终端编写一个 shell 脚本。我希望能够在提示下输入变量名称。例如:

测试.sh:

 test="Monkey in the middle..."
 read -p "Enter input: " input
 echo $input
Run Code Online (Sandbox Code Playgroud)

输出:

 Enter input: $test
 $test
Run Code Online (Sandbox Code Playgroud)

我希望能够read -p在脚本的提示部分输入“$test”,并在最后让脚本回显“中间的猴子...”,而不是像现在这样回显“$test”。

我该怎么做?



更新:

使用此处和此线程中提供给我的答案(非常感谢贡献者和评论员!),我设法将这条线拼凑起来,这对我来说非常有效:

newvariable="$(eval echo $input)" 
Run Code Online (Sandbox Code Playgroud)

请注意,我不止一次被警告说使用 eval 可能会带来安全风险。如果您选择此解决方案,请记住这一点。

Moo*_*ild 4

代替

echo "$input"
Run Code Online (Sandbox Code Playgroud)

尝试

eval echo "$input"
Run Code Online (Sandbox Code Playgroud)

它甚至不是特定于 bash 的,适用于 /bin/sh!

请注意,这会带来严重的安全风险,因为eval它只会执行您提供的内容。在这种情况下,shell 将字符串解释$input$test,然后eval执行echo $test。但如果用户输入了怎么办$test; rm -rf *eval将呈现echo $test; rm -rf *. 如果您这样做,请务必小心。