我是 shell 脚本新手。我正在一点一点地学习。我更熟悉 php,它现在正在对我不利。
无论如何,我正在编写一个 shell 脚本,并使用以下内容读取输入:
read $foo
我现在想在 sed 字符串替换中使用这个变量,如下所示:
sed -i 's/replaceme/$foo' myfile.txt
我得到的是字面替换,而不是 $foo 实际等于的内容。相反,我希望它成为用户的输入:
例子:
使用这一行( read $foo
)。假设我输入“bar”。因此$foo='酒吧'来自用户输入。
电流输出:
$foo
所需输出
bar
希望这是有道理的。
答案1
简短的回答:使用双引号而不是单引号。
单引号可以防止扩展 shell 变量,而双引号则不会。
有关更多详细信息,请参阅http://www.grymoire.com/Unix/Quote.html
完整的详细信息包含在 shell 的文档中,不同的 shell 之间存在一些差异,但几乎每个 Unix 风格的 shell 的基础知识都是相同的。