shell 脚本中的读取命令 - 变量输入替换

shell 脚本中的读取命令 - 变量输入替换

我是 Linux 新手,请原谅这里使用的任何错误术语。

我使用的是 Ubuntu 18.04。我正在使用命令读取 shell 脚本中的文本read。我在 bash 窗口中有一个变量,我想在该读取命令中替换它。我的 shell 脚本如下所示:

echo "Enter Text"
read text
echo "Text is $text"

然后我在终端中像这样执行

user@machine:~$ var="hello world"
user@machine:~$ ./script.sh
Enter text
$var
Text is $var
user@machine:~$ 

注意输出中的行 - Text is $var..如何让它读取变量的值var,以便将其存储hello world在名为 的变量中text

注意:我知道有一个选项可以将参数传递给脚本,但我发现这对于执行脚本的用户来说更直观,因此想知道如何这样做!

答案1

这就是所谓的间接,语法是${!reference}替换变量名中变量的值reference。例如:

name='Jane Doe'
reference='name'
$ echo "${!reference}"
Jane Doe

答案2

您需要先导出变量:

export var=test

然后,使用envsubst替换文本内的变量:

echo "Enter Text"
read text
printf 'Text is %s\n' "$text" | envsubst

环境替换- 替换 shell 格式字符串中的环境变量

相关内容