gpt4 book ai didi

docker - 从 jenkins 启动的 Tcl 脚本将命令转换为小写

转载 作者:行者123 更新时间:2023-12-02 11:19:55 25 4
gpt4 key购买 nike

我在 jenkins 中运行 tcl 命令时遇到了一个奇怪的问题。

tcl 脚本有以下几行(注意 Id 中的大写 I):

foreach name $docker_names {
set name "TestName"
puts $name
set command "docker inspect --format='{{.Id}}' ${name} > /home/temp/id.txt"
send -- "$command\n"
expect "$"
}

在 jeknins 日志中,我看到作业失败,因为在循环的第二次迭代中发送的内容是上面的命令,但是小写的。我需要 Id 中的 I 为大写。

这是在循环的第二次迭代中发送的内容:

docker inspect --format='{{.id}}' testname > /home/temp/id.txt

注意:在第一次迭代中,所有内容均已正确发送。

有人知道为什么会发生这种情况吗?

谢谢!

最佳答案

从纯粹的 TCL 角度来看,这是不可能发生的。这是 Jenkins 中 TCL 解释器集成的副作用:我猜有一个隐藏层可以解析脚本并根据非 TCL 语法对其进行修改。我会做2次试验:首先是最小化字符串的 TCL 解析:

foreach name $docker_names {
set name "TestName"
puts $name
set command [concat {docker inspect --format='{{.Id}}'} $name { > /home/temp/id.txt} "\n"]
send -- $command
expect "$"
}

如果没有帮助,请尝试对可能由另一层解释的大括号进行反引号:

foreach name $docker_names {
set name "TestName"
puts $name
set command "docker inspect --format='\{\{.Id\}\}' ${name} > /home/temp/id.txt"
send -- "$command\n"
expect "$"
}

关于docker - 从 jenkins 启动的 Tcl 脚本将命令转换为小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46281749/

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