我是 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 格式字符串中的环境变量