Unix 명령은 Tcl 스크립트에서 작동하지 않습니다.

Unix 명령은 Tcl 스크립트에서 작동하지 않습니다.

저는 Tcl과 UNIX 프로그래밍을 처음 접했습니다.

다음 명령은 UNIX 명령줄에서는 작동하지만 Tcl 스크립트에서는 작동하지 않습니다.

$ sort -b -k8  abc.txt | awk '!a[$1]++'
error out for 8 (-k8) and 1($1) is not variable

8열을 정렬하려고 합니다.첫 번째그리고그 다음에열 1에서는 고유한 데이터만 선택합니다.

또한 데이터를 파일에 저장해 보았습니다.

답변1

내 생각에는 문자열에서 and 를 이스케이프해야 한다고 생각합니다 []. 예를 들면 다음과 같습니다.$

send_unix_cmd "sort -k$sort_col top_$host | awk '!a\[\$$uni_col\]++' "

나는 또한 그것을 삭제했다 {}.

답변2

Tcl스크립트에서 명령을 실행하려면 를 사용해야 한다고 생각합니다 exec. 작은따옴표는 스크립트에서 특별한 의미가 없으므로 Tcl변수를 확장하려고 시도합니다 $1. 다음을 시도해 볼 수 있습니다.

exec sort -b -k8  abc.txt | awk {!a[$1]++} > output

프로그램의 표준 출력을 리디렉션하지 않으면 명령의 반환 값이 되므로 exec이를 캡처할 수 있습니다. 예를 들면 다음과 같습니다.

set result [exec sort -b -k8  abc.txt | awk {!a[$1]++}]

관련 정보