gpt4 book ai didi

tcl:eval 和 exec 混淆点

转载 作者:行者123 更新时间:2023-12-04 19:50:11 27 4
gpt4 key购买 nike

我对 Tcl 中的 execeval 有点困惑。在下面的例子中:

set cmd "mkdir new_folder";
exec $cmd

无法使用错误消息:无法执行“mkdir new_folder”没有这样的文件或目录。使用 eval 可以正常工作

set cmd "mkdir new_folder";
eval exec $cmd

我也试过这种方式:

set cmd_1 "mkdir";
set cmd_2 "new_folder"
exec $cmd_1 $cmd_2

它也很好用。那是什么原因呢?

最佳答案

您真正需要注意的地方是您的参数之一是否包含空格。在那种情况下,eval 将不知道要做什么:

% set cmd "mkdir 'dir with spaces'"
mkdir 'dir with spaces'
% eval exec $cmd
% exec ls -l
total 20
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 'dir
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 spaces'
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 with

您真正想要做的是使用列表。然后 Tcl 准确理解分离元素是什么

% set cmd [list mkdir "dir with spaces"]
mkdir {dir with spaces}
% exec {*}$cmd
% exec ls -l
total 24
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 'dir
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:53 dir with spaces
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 spaces'
drwxr-xr-x 2 glennj glennj 4096 Feb 12 07:51 with

关于tcl:eval 和 exec 混淆点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28468367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com