使用 system() 命令使 awk 使用 bash

hae*_*lix 5 shell bash awk command

有没有办法让 awk 在使用system()调用运行系统命令时使用 bash 而不是 sh ?

我想使用一些 bash 特定的功能,例如 [[ ]] 和 < > 字符串比较运算符:

gawk 'BEGIN {system("if [[ \"porc\" == \"porc\" ]]; then echo yes; else echo no; fi")}'
sh: [[: not found
Run Code Online (Sandbox Code Playgroud)

gle*_*man 5

如果你想要 bash,你要么必须修补 gawk,要么直接调用 bash(引用有点麻烦):

gawk 'BEGIN {
    script="if [[ \"porc\" == \"porc\" ]]; then echo yes; else echo no; fi"
    system("bash -c '\''" script "'\''")
}'
Run Code Online (Sandbox Code Playgroud)