Expect 스크립트에서 공백을 밑줄로 바꾸세요.

Expect 스크립트에서 공백을 밑줄로 바꾸세요.
#!/usr/bin/expect -f
set cmd "abc def ghi lkj"
set log [ expr echo ${cmd// /_} ]

변수를 ghi_lkj로 기록하고 싶습니다.

먼저 모든 공백을 밑줄로 바꾼 다음 처음 두 단어를 제거하려고 했습니다.

쉘 스크립트가 아닌 예상 스크립트에서만 이 작업을 수행하고 싶습니다.

어떻게 해야 할지 제안해 주세요. 미리 감사드립니다.

답변1

expectTCL 해석기이자 ${cmd// /_}Korn 쉘 매개변수 확장 연산자입니다. TCL은 ksh나 관련 쉘이 아닙니다.

매뉴얼 페이지를 읽은 후 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

관련 정보