shell中反引号和$()的区别以及eval命令

时间:2022-07-16 21:46:17

反引号和$()的区别
反引号和$()都是shell脚本中用来进行命令代换的命令,命令代换就是运行一个命令将其结果交给一个变量。

echo ‘echo \\ ’ //反引号
echo $(echo \\ )

shell中反引号和$()的区别以及eval命令

我们再把脚本改成8个\
shell中反引号和$()的区别以及eval命令

总结:
1、反引号本身对\做了解释,保留了本身的意思。如果我们想在反引号中起到\的特殊意义,用两个\来表示
2、 ()\使\ ()是比较新的用法,如果要使用的话就优先使用$()。

eval命令
eval命令的作用是再次执行命令行处理,也就是对一个命令行执行两次命令行的处理(执行两次命令行处理不是执行两次命令)。eval后面跟一个命令,eval会对后面的命令进行两次扫描,如果第一次扫描发现这个命令是个普通的命令就会执行这个命令,如果后面的命令是含有变量的简洁引用,就保证间接引用的语义。

1、eval命令先扫描命令行做一个置换,然后再执行该命令。这个命令适用于那些无法扫描一次就实现其功能的变量,这个命令会对变量进行两次扫描,这就是复杂命令。不过eval命令也适用于简单的命令时是对其的回显。
2、eval也可以用于回显简单变量,不一定时复杂变量
shell中反引号和$()的区别以及eval命令
3、两次扫描,我们首先创建一个名为test的小文件,在这个小文件中含有一些文本。接着,将cat test赋给变量myfile,现在我们e cho该变量,看看是否能够执行上述命令。
shell中反引号和$()的区别以及eval命令
4、获得最后一个参数

echo “Last argument is (evalecho$ #)”
echo “Last argument is (evalecho #)”