我一直在整理一个 bash 脚本,该脚本接受一个 ini 文件(具有我一直在与脚本一起开发的格式)并通读该文件,执行指定的操作。
ini 格式的函数之一允许使用eval
. 当命令包含变量名时,我遇到了问题。
eval
(或一般的外壳)似乎没有正确替换值,并且大多数时候它似乎用空格替换所有变量名,从而破坏了命令。创建字符串输出的子shell 似乎也有同样的问题。
奇怪的是,这在我的开发机器上运行(运行 linux mint 13),但是当我将脚本移动到运行 CentOS 5.8 的目标机器时,这些问题就出现了。
我从 ini 文件中读取的一些代码示例:
shellcmd $toolspath/program > /path/file
shellcmd parsedata=$( cat /path/file )
这些通过一个脚本函数剥离前导shellcmd
,然后使用 evals 字符串
eval ${scmd}
关于可能导致奇怪行为的原因以及我可以尝试解决问题的任何想法?我的最终目标是能够从文件中读取一行并让我的脚本执行它,并能够正确处理读取命令中的脚本变量。