反引号和$()的区别
反引号和$()都是shell脚本中用来进行命令代换的命令,命令代换就是运行一个命令将其结果交给一个变量。
echo ‘echo \\ ’ //反引号
echo $(echo \\ )
我们再把脚本改成8个\
总结:
1、反引号本身对\做了解释,保留了本身的意思。如果我们想在反引号中起到\的特殊意义,用两个\来表示
2、
eval命令
eval命令的作用是再次执行命令行处理,也就是对一个命令行执行两次命令行的处理(执行两次命令行处理不是执行两次命令)。eval后面跟一个命令,eval会对后面的命令进行两次扫描,如果第一次扫描发现这个命令是个普通的命令就会执行这个命令,如果后面的命令是含有变量的简洁引用,就保证间接引用的语义。
1、eval命令先扫描命令行做一个置换,然后再执行该命令。这个命令适用于那些无法扫描一次就实现其功能的变量,这个命令会对变量进行两次扫描,这就是复杂命令。不过eval命令也适用于简单的命令时是对其的回显。
2、eval也可以用于回显简单变量,不一定时复杂变量
3、两次扫描,我们首先创建一个名为test的小文件,在这个小文件中含有一些文本。接着,将cat test赋给变量myfile,现在我们e cho该变量,看看是否能够执行上述命令。
4、获得最后一个参数
echo “Last argument is
(evalecho$ #)”
echo “Last argument is(evalecho #)”