Bash AWK:将值返回到shell脚本

Bash AWK:将值返回到shell脚本,bash,awk,Bash,Awk,是否可以在bash脚本中使用awk命令将值返回给bash变量,即,如果我的awk脚本执行一些算术运算,我是否可以将答案存储在变量中,以便可以在bash脚本中访问它们。如果可能,如何区分多个返回变量。谢谢。否。您可以使用exit返回错误代码,但通常不能从子流程修改shell环境 当然,您也可以使用read,在awk中打印所需的内容,并将其放入bash中的变量中: read a b c <<< $(echo "foo" | awk '{ print $1; print $1; pr

是否可以在bash脚本中使用awk命令将值返回给bash变量,即,如果我的awk脚本执行一些算术运算,我是否可以将答案存储在变量中,以便可以在bash脚本中访问它们。如果可能,如何区分多个返回变量。谢谢。

否。您可以使用
exit
返回错误代码,但通常不能从子流程修改shell环境

当然,您也可以使用
read
,在awk中打印所需的内容,并将其放入bash中的变量中:

read a b c <<< $(echo "foo" | awk '{ print $1; print $1; print $1 }')
readabc

这应该将var设置为awk的输出。然后,您可以使用字符串函数或其他函数在值内进行区分,或者让awk仅打印您想要的部分。

如何?你能举个例子吗。Thanks@ShuvoShams:我添加了一个,希望对您有所帮助。@EduardoIvanec-修改父进程的环境(变量)非常困难,可能会被宣布为“几乎不可能”。@AndrewBeals:您是否有指向其中一个困难方法的链接?我知道您可以在一些低级Unix系统调用中传递指向当前环境的指针,但我不知道在shell级别如何实现这一点。@EduardoIvanec实际上,上次我想做这样的事情时,需要在进程表中挖掘父进程的位置,然后直接在/dev/mem中进行操作。除非您是root用户,并且在系统内存空间中挖掘,或者如果父级通过共享内存系统调用显式地与您共享地址空间,否则您无法访问父级的地址空间。此时,您还可以声明某种接口,并通过适当的IPC调用传递信息。
var=$(awk '{ print $1}')