0

我有一个包含以下内容 aaaa = 1000 的文本文件

我想用从文本文件中获得的 1000 替换 LaTeX 文件中的 bbbb

我尝试了以下代码,但没有奏效。

设置 motor_loc =grep -i 'aaaa' motor.txt | awk '{print $2}'

sed -i 's/bbbb/$motor_loc/' for_pdf.tex> for_pdf.tex.tmp

此时bbbb改成$motor_loc

然后,当我尝试使用以下行创建 pdf 时,它给了我一个错误。

pdflatex for_pdf.tex

如何将 bbbb 更改为 1000(从文本文件中读取的值)而不是 $motor_loc 或字符串。

仅供参考,我正在使用 Cygwin 和 Miktex,并将尝试在 Raspberry Pi 2 中运行此代码。

先感谢您。

4

1 回答 1

0

参数中的单引号可防止sed变量被扩展,因此请从单引号变为双引号

user@thoth:~$ FOO=ABC
user@thoth:~$ echo $FOO
ABC
user@thoth:~$ echo "$FOO"
ABC
user@thoth:~$ echo '$FOO'
$FOO

另一种可能有用的引号是反引号,它将命令的输出更改为字符串。

user@thoth:~$ FOO=`ls *.txt`
user@thoth:~$ echo $FOO
soap.txt

编辑:如今,bash 脚本中似乎更常使用不同形式的命令替换

 FOO=$(ls *.txt)

例如,在命令中处理反斜杠的方式存在明显差异

于 2016-03-22T23:24:01.647 回答