eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量。
一个应用场景如下:
export path="/home/bin/"
a="\$path/file1"
echo $a
会显示: $path/file1
我们实际想得到的结果是:/home/bin/file1
解决:
a=$(eval echo $a)
有人会说,谁那么蛋疼给a赋值的时候还搞个转义符在前面?实际当然没人那么蛋疼,可是有时a不是你自己赋值的,是别人给你的,那时候你没办法控制,这个就派上用场了。我遇到的场景是用xml_grep获取到的串是带转义符的,搞了半天才找到这个解决方法。