包含单引号或双引号的Bash变量扩展

时间:2020-11-02 23:55:55

标签: bash promela spin

我有一个正在编写的脚本,可以使用promela模型自动运行特定的测试。

用户必须向promela模型和另一个文件提供他们希望针对该模型运行的ltl属性。

我使用以下命令逐行读取文件:

while read line; do 
  do_something()
end < $PROPERTIES

do_something()更复杂,但是我遇到的主要问题是最终我想调用以下内容

spin -run -m100000 -f $line $PROMELAFILE >> $OUTFILE

最终命令应如下所示

spin -run -m100000 -f '[] true' file.pml >> out.txt

最终命令确实可以在命令行中正常工作。要使-f选项正常工作,引号是绝对必要的。

问题是$ line变量,当从文件中读取它时,它看起来如下所示

'[]是'

它也可能看起来像

“ []是”

在语义上是等效的。

但是,我不断收到以下错误消息

unexpected EOF while look for matching `"'
syntax error: unexpected end of file

无论是单引号还是双引号,都会发生此错误

这使我认为,当$ line扩展时,关于bash以及'和'的使用我不了解。

您可以提供的任何帮助/理解都将非常有帮助。谢谢!

0 个答案:

没有答案