问题来自论坛求助,如下图:
有网友给出答复如下:
eval cp $algo_files /home/data
此方法可行。
我给出另一种方法如下:
order = "cp $algo_files /home/data"
echo $order | bash
两种方法都可以解决问题,做如下总结:
1.eval命令l会对后面的命令进行两遍扫描,如果第一遍扫描后,命令是个普通命令,则执行此命令;如果命令中含有变量的间接引用,则保证间接引用的语义。也就是说,eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。在本例中就属于有间接引用的情况。
2.我给出的方法属于曲线救国。利用管道将echo命令输出的字串当数据源输入给bash命令。bash解析字串命令并执行。