eval builtin command

2023-10-12 15:23:37 浏览数 (2)

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

0 人点赞