Bash 스크립트는 작동 BASEDIR=$(dirname $0)
하지만 Expect 스크립트에서는 어떻게 수행합니까?
을 사용하면 BASEDIR=[dirname $argv0]
"잘못된 명령 이름 "dirname"" 오류가 발생합니다.
답변1
TCL의 다양한 파일 작업은 다음과 같이 구성됩니다.file(n)
명령이 포함된 프로그램입니다 dirname
.
% expect
expect1.1> file dirname $argv0
.
그러나 TCL(또는 쉘 코드)이 실행되는 방식에 따라 유효성이 설정되거나 유효하지 않거나 확인되지 않을 수 있으므로 코드의 방식에 따라 디렉터리도 달라질 수 있으므로 오류 확인이 필요할 수 있습니다. 달리다.
% cat dirname
#!/usr/bin/env expect
set basedir [file dirname $argv0]
puts $basedir
% chmod +x dirname
% ./dirname
.
% ~/tmp/dirname
/Users/jhqdoe/tmp
%
file normalize
항상 완전한 경로를 원하면 를 사용하십시오.
% expect
expect1.1> set basedir [file normalize [file dirname $argv0]]
/Users/jhqdoe/tmp
게다가Tcl_FindExecutable(3)
다음을 통해 실행 파일 이름(사용 가능한 경우)을 노출하는 호출info nameofexecutable
주문하다:
% expect
expect1.1> info nameofexecutable
/opt/local/bin/expect