Shell 脚本 eval 命令

2025 年 3 月 17 日 | 阅读 1 分钟

eval 命令是一个内置命令。它接受一个字符串作为其参数并对其求值,然后运行存储在该参数中的命令。它允许使用变量的值作为变量。

示例 1

Linux Shell Scripting eval 1

查看上面的快照,命令 "echo \${$User}" 运行 $User 作为一个 shell 变量并显示其输出。

但是命令 "eval echo \${$User}" 运行传递给 eval 的参数。 扩展后,剩余的参数是 echo${Hello}。 因此,eval 命令运行命令 echo ${Hello}。 因此,输出是 Mr. X

必须在变量和命令替换周围使用双引号。如果没有双引号,shell 可能会对变量的不同单词执行字段拆分。

Linux Shell Scripting eval 2

示例 2

Linux Shell Scripting eval 3

查看上面的快照,我们已经将一个参数 (1 week ago) 传递给 date 命令。这是显示的上周的日期和时间。

但是,当我们将此命令设置为变量 (lastweek) 并运行它时,该命令无法打印日期。 向下看,

Linux Shell Scripting eval 4

查看上面的快照,命令 "$lastweek" 失败,而命令 "eval $lastweek" 成功运行。


(( ))

此符号主要用于数值评估。它是一个复合命令。

Linux Shell Scripting eval 5

查看上面的快照,单括号 ( ) 给出错误,而双括号 (( )) 成功执行该命令。

下一个主题脚本 let