谁能解释这种行为?正在运行:
#!/bin/sh
echo "hello world" | read var1 var2
echo $var1
echo $var2
导致没有输出,而:
#!/bin/sh
echo "hello world" > test.file
read var1 var2 < test.file
echo $var1
echo $var2
产生预期的输出:
hello
world
管道不应该一步一步地执行第二个示例中对test.file的重定向吗?我对破折号和bash壳都尝试了相同的代码,并且两者的行为相同。
bash该lastpipe选项最近添加了一个选项,当停用作业控制时,该选项允许管道中的最后一条命令在当前外壳程序中运行,而不是子外壳程序中运行。
#!/bin/bash
set +m # Deactiveate job control
shopt -s lastpipe
echo "hello world" | read var1 var2
echo $var1
echo $var2
确实会输出
hello
world
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。