Shell脚本中的$()和``及eval区别
**1.和$()有什么区别?** 在shell脚本中,
和$()是用来完成命令替换的,先执行反引号或括号里面的内容,将结果代换到当前命令。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVWBJ1u0-1571972296920)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571382557256.png)]
区别:对于转义字符的处理有些不同。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHsSN7TP-1571972296921)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571393059917.png)]
``中的转义没有成功,KaTeX parse error: Undefined control sequence: \将 at position 4: ()中\̲将̲转义成普通字符
2.eval命令
2.1 eval echo相当于echo
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ayb1LW6b-1571972296921)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571393024084.png)]
2.2 该命令适用于依次扫描无法完成其功能的变量。
第一步:对eval后面的命令进行扫描,执行变量替换,普通命令保留。
第二步:执行变量替换后的命令串。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8LPkh9N-1571972296922)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571393034797.png)]
2.3 获取最后一个参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wH33xAK5-1571972296922)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571393046011.png)]
第一行获得参数的个数,第二行获得最后一个参数。
第一行获得参数的个数,第二行获得最后一个参数。