我找到了一些办法通过外壳变量的awk脚本,但我感到困惑'和".
首先,我尝试使用shell脚本:
$ v=123test
$ echo $v
123test
$ echo "$v"
123test
Run Code Online (Sandbox Code Playgroud)
然后尝试了awk:
$ awk 'BEGIN{print "'$v'"}'
$ 123test
$ awk 'BEGIN{print '"$v"'}'
$ 123
Run Code Online (Sandbox Code Playgroud)
为什么有区别?
最后我试过这个:
$ awk 'BEGIN{print " '$v' "}'
$ 123test
$ awk 'BEGIN{print ' "$v" '}'
awk: cmd. line:1: BEGIN{print
awk: cmd. line:1: ^ unexpected newline or end of string
Run Code Online (Sandbox Code Playgroud)
我对此感到困惑.
我想system在awk脚本中运行该命令并将其输出存储在变量中.我一直试图这样做,但命令的输出总是进入shell而我无法捕获它.关于如何做到这一点的任何想法?
例:
$ date | awk --field-separator=! {$1 = system("strip $1"); /*more processing*/}
Run Code Online (Sandbox Code Playgroud)
应该调用strip系统命令而不是将输出发送到shell,应该将输出分配回来$1进行更多处理.现在是Rignt,它将输出发送到shell并将命令的retcode分配给$1.