echo 123 | func vvv
echo $vvv
结果是123.如何实施?
答案 0 :(得分:1)
答案 1 :(得分:1)
第一个问题是您无法使用管道设置变量,因为管道的每个部分都在一个单独的进程中运行,而变量在一个单独的进程中是本地的。
但是,从bash
4.2开始,使用lastpipe
选项稍微松开了该限制。只要禁用作业控制,这就可以使管道的 last 部分在同一进程中运行。 (您可以使用set +m
执行此操作,但这仅在交互式shell中是必需的;默认情况下,在非交互式shell中禁用作业控制,例如在脚本中。)
使用此选项,您要查找的命令只是read
:
$ shopt -s lastpipe
$ set +m
$ echo 123 | read vvv
$ echo "$vvv"
123