dash-shell - Shell 脚本输入重定向异常

标签 dash-shell

谁能解释这种行为? 运行:

#!/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 的工作吗?我用 dash 和 bash shell 尝试了相同的代码,并从它们中得到了相同的行为。

最佳答案

最近添加到 bash 的是 lastpipe 选项,它允许管道中的最后一个命令在当前 shell 中运行,而不是子 shell,当作业控制是停用。

#!/bin/bash
set +m      # Deactiveate job control
shopt -s lastpipe
echo "hello world" | read var1 var2
echo $var1
echo $var2

确实会输出

hello
world

关于dash-shell - Shell 脚本输入重定向异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732/

相关文章:

bash - 从 find 中排除文件和目录。匹配某个正则表达式的函数

bash - 您如何使用内置的纯未设置外壳程序?您可以编写不受篡改的shell脚本吗?

bash - 如何识别脚本中是否使用了 bash 或 dash?

重命名文件夹中所有图像的Ubuntu脚本

dash-shell - 破折号相当于 bash 的大括号语法?

bash - 在 bash 和 dash 中可靠地用换行符打印字符串

shell - 如何将命令参数中的引号转义为 sh -c?

bash - "bash -c"与 "dash -c"

linux - 以仅包含冒号的行结尾的 Shell 脚本?