gpt4 book ai didi

linux - 如何从 tcl 文件中的单个变量执行多个命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:20:52 26 4
gpt4 key购买 nike

我正在尝试使用 tcl 文件制作自定义 MOTD header 。我已经成功地将命令添加到/etc/profile 的最后一行

cowsay -f $(ls /usr/share/cowsay/cows/  | shuf -n1) $(whoami), $(fortune)

我想将它添加到我现有的 MOTD 中,但我不知道在没有管道中断命令的情况下执行多个命令的正确语法。正如您在下面看到的,我已经尝试过:

#!/usr/bin/env tclsh

# * Variable
set cows [exec -- /usr/bin/whoami | /usr/games/fortune | cowsay]


# * Output

puts "$cows"

它可以很好地输出 fortune 和 cowsay,但是,我似乎无法让 whoami 命令与其他命令一起执行。

\   ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||

任何关于如何从 tcl 格式的语法中执行多个命令的帮助将不胜感激,谢谢大家。

最佳答案

iagreen 的回答当然是正确的并且可能更易于维护,但要回答您的子问题:如何将 $(some command) 翻译成 tcl:

在 bash 中,$(...) 语法通过在另一个 shell 中评估它来执行括号捕获的字符串 - bash 的新实例通常称为子 shell。

在 tcl 中,exec 命令将其参数作为要在子 shell 中求值的单词列表来执行。

所以,将两个和两个放在一起,$(...) 的正确翻译是 [exec ...]

因此,直接翻译为:

cowsay -f $(ls /usr/share/cowsay/cows/  | shuf -n1) $(whoami), $(fortune)

这是:

exec cowsay -f [exec ls /usr/share/cowsay/cows/ | shuf -n1] \
[exec whoami], [exec fortune]

这和iagreen给出的答案基本一致。

关于linux - 如何从 tcl 文件中的单个变量执行多个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14048375/

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