我正在为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