$ tail -f /logs/filename.log | awk '!(/list)'
GNU Linux 버전에서 이 명령을 실행할 수 있습니다.
하지만 스크립트로 작성하면 작동하지 않습니다.
테스트.ksh:
variable="/logs/filename.log | awk '!(/list)'"
tail -f $var
다음과 같이 오류가 발생합니다.
tail: cannot open `|' for reading: No such file or directory
tail: cannot open `grep' for reading: No such file or directory
tail: cannot open `list' for reading: No such file or directory
이 작업을 어떻게 수행해야 합니까? 누구든지 나에게 지침을 줄 수 있습니까?
답변1
코드가 여러 가지 방법으로 손상되었습니다 ...
이름으로 변수를 정의한
variable
다음 해당 이름으로 호출할 수 있습니다var
. 그건 작동하지 않습니다.참조가 너무 이상했기 때문에 처음에는 이 변수를 사용하여 무엇을 달성하려고 했는지 알 수 없었습니다. 당신은 나보다 인터프리터에 더 많은 문제를 안게 될 것입니다 ;-) 효과적으로 명령 세트(파이프 포함)처럼 보이는 문자열을 보내는 것입니다. 그러나 다른 명령의 매개변수로 인용된 문자열 안에 있기 때문에 텍스트 덩어리에서 매개변수로 너무 많은 문자를 만나게 될 것입니다. 통역사가 건드리지 않는 것.
test.ksh
파일에 다음과 같은 내용을 추가하고 싶을 수도 있습니다.
#!/bin/ksh
log_file="/logs/filename.long"
tail -f $log_file | awk '!(/list)'
또는 다음과 같은 명령으로 실행할 수도 있습니다 ./test.ksh /logs/filename.log
.
#!/bin/ksh
tail -f $1 | awk '!(/list)'
답변2
두 가지 다른 글을 쓰셨습니다.
쉘에서 tail -f의 출력이 awk로 리디렉션됨을 선언합니다.
스크립트에서 tail -f는 "/logs/filename.log", "|", "awk" 및 "!(/list)"라는 파일에서 데이터를 읽어야 한다고 명시합니다.
스크립트 파일에 다음을 작성하려고 합니다.
#!/bin/ksh
variable="/logs/filename.log"
tail -f $variable | awk '!(/list)'