gpt4 book ai didi

ubuntu - 为什么使用 'source' 运行 TCL 脚本会报错?

转载 作者:行者123 更新时间:2023-12-04 19:00:05 25 4
gpt4 key购买 nike

我现在正在研究 TCL 脚本。当我运行 tclsh script.tcl该脚本运行良好,但是当我运行 source script.tcl不再找到命令。

#!/usr/bin/env tclsh
proc test {} {
set a 43
set b 27
set c [expr $a + $b]
set d [expr [expr $a - $b]* $c]
for {set k 0} {$k < 10} {incr k} {
if {$k < 5} {
puts "k<5, pow=[expr pow($d,$k)]"
} else {
puts "k>=5, mod=[expr $d % $k]"
}
}
}

...运行时会导致错误:

$ source myfirst.tcl

Command 'proc, not found, did you mean:

command 'croc' from snap croc (6.4.10)
command 'prof' from deb profphd
command 'nproc' from deb coreutils
command 'proj' from deb proj-bin

See 'snap info <snapname>' for additional versions.

bash: myfirst.tcl: line 7: syntax error near undexpected token `k'

最佳答案

source不能用于运行任何不是以您调用它的 shell 的本地语言编写的脚本。

也就是说,在 bash 中,source只能用于运行 bash 脚本。它不能运行 TCL 脚本。这是本质上的:什么source确实是跳过运行额外的 shell 或其他解释器(因此,强制你的 #!/usr/bin/env tclsh shebang 被忽略),并在你已经在的 shell 中运行代码。

如果该 shell 无法本地解析您编写的脚本所用的语言,则可以预期语法错误 - 以一种语言编写的内容正在由专门为支持另一种语言而设计的解释器进行解析。 bash:错误消息上的前缀清楚地表明实际上是这种情况;这是 bash,而不是 tclsh ,试图解释脚本。

关于ubuntu - 为什么使用 'source' 运行 TCL 脚本会报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60347440/

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