#!/usr/bin/expect -f
set cmd "abc def ghi lkj"
set log [ expr echo ${cmd// /_} ]
我想将变量记录为 ghi_lkj
首先我试图用下划线替换所有空格,然后删除前两个单词。
我只想在expect 脚本而不是shell 脚本中执行此操作。
请建议怎么做。提前致谢。
答案1
expect
是一个TCL解释器,${cmd// /_}
是一个Korn shell参数扩展运算符。 TCL 不是 ksh,也不是任何相关的 shell。
阅读expect
手册页后,下一步应该是研究 TCL 文档。参见例如https://tcl.tk/doc/不过,您也可以在系统上安装适用于您的 TCL 版本的手册页(您可能需要安装软件包tcl-doc
)。
这里要做字符替换,可以使用TCL的string map
例子:
set cmd "abc def ghi lkj"
set log [string map {" " _} $cmd]
puts $log
或者将其视为$cmd
一个列表并加入_
:
set cmd "abc def ghi lkj"
set log [join $cmd _]
puts $log
哪个会输出abc_def_ghi_lkj
.
如果您愿意ghi_lkj
,那么,这不仅仅是_
您想做的 SPC。
可能您希望最后两个单词与_
或除前两个单词外的所有单词与 相连_
:
set cmd "abc def ghi lkj"
set log [join [lrange $cmd 2 end] _]
puts $log