1.命令简介
eval(evaluate)连接参数构造命令并执行,为内建命令。
使用空格分隔每个参数,如果参数中含有变量,则替换为变量值,然后再将构造的命令交由 Shell 解释执行。它通常用于动态生成和执行命令,或者将字符串解释为可执行的 Shell 代码。
2.命令格式
代码语言:javascript复制eval [ARG...]
eval 的返回值是其后面命令的退出状态。如果没有参数或只有空参数,eval 返回 0。
3.选项说明
None。
4.常用示例
(1)打印变量。
代码语言:javascript复制NAME=foo
echo $NAME
foo
# echo 前添加 eval 也可以
eval echo $NAME
foo
(2)先替换变量再执行命令。
代码语言:javascript复制cat test.txt
Hello World!
command="cat test.txt"; echo $command
cat test.txt
eval $command
Hello World!
(3)获取传给脚本或函数的最后一个参数。
Shell 使用特殊字符 # 表示传递给脚本或函数的参数个数,使用n获取参数,n 为数字,1 表示第一个参数,2 表示第二个参数,所以
代码语言:javascript复制cat test.sh
#!/usr/bin/bash
echo $$#
eval echo $$#
./test.sh firstarg lastarg
$2
lastarg
参考文献
bash(1) - Linux manual page - man7.org ``和$()的区别及eval详解 - CSDN