실행 시스템 명령을 호출할 때 awk가 sh 대신 bash를 사용하도록 하는 방법이 있습니까 system()
?
[[ ]] 및 < > 문자열 비교 연산자와 같은 bash 관련 기능을 사용하고 싶습니다.
gawk 'BEGIN {system("if [[ \"porc\" == \"porc\" ]]; then echo yes; else echo no; fi")}'
sh: [[: not found
답변1
Bash를 원하면 gawk를 패치하거나 bash를 직접 호출해야 합니다(인용문이 약간 복잡합니다).
gawk 'BEGIN {
script="if [[ \"porc\" == \"porc\" ]]; then echo yes; else echo no; fi"
system("bash -c '\''" script "'\''")
}'
답변2
awk
다음 작업을 직접 수행할 수 있습니다.
$ awk 'BEGIN { if ("A" < "B") print "A < B"; else print "A >= B" }'
A < B
정규식도 처리할 수 있습니다.
$ awk 'BEGIN { if ("thing" ~ "^t") print "t-something"; else print "not t-something" }'
t-something
또는 예를 들면 다음과 같습니다.
$ awk 'BEGIN { if ("porc" == "porc") print "yes"; else print "no" }'
yes
awk
과거에는 외부 명령을 호출하는 것이 system()
매우 느리고 불가능 했습니다 .산출프로그램 자체 내에서 사용 가능한 모든 형태의 명령 awk
.