bash - 包含单引号或双引号的 Bash 变量扩展
问题描述
我正在编写一个脚本,用于使用 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 以及 ' 和 " 的使用有些不理解。
您可以提供的任何帮助/理解都会非常有帮助。谢谢!