bash进程替换&x2B;在主流程和子流程中使用相同的变量

bash进程替换&x2B;在主流程和子流程中使用相同的变量,bash,race-condition,process-substitution,Bash,Race Condition,Process Substitution,如果我这样做 编辑:也许更好的比较是 {echo 42;echo 13;}>/tmp/x cat>/tmp/x< 在主流程和子流程中使用相同的变量 每个进程都有自己的空间。它们是独立的变量 我能保证回来吗 对 在分叉被替换的进程之前,它是否可以清除目标(=子进程的源)数组 x=42 IFS= read -r x < <(echo "$x") echo "$x" 没有 子进程在--before或beforemapfile可能清除数组时创建了副本

如果我这样做

编辑:也许更好的比较是

{echo 42;echo 13;}>/tmp/x
cat>/tmp/x<
在主流程和子流程中使用相同的变量

每个进程都有自己的空间。它们是独立的变量

我能保证回来吗

在分叉被替换的进程之前,它是否可以清除目标(=子进程的源)数组

x=42
IFS= read -r x < <(echo "$x")
echo "$x"
没有


子进程
在--before或before
mapfile
可能清除数组时创建了副本?什么时候开始?这就是问题所在question@usretc至少据我所知,父shell必须创建一个管道,然后分叉运行
echo“$x”
,然后将管道的另一端连接到FD并替换它(制作类似于
,然后运行
read
(或
mapfile
或其他内容)这就是它的stdin。所以我很确定fork必须在主命令启动之前发生。@GordonDavisson很好的总结。这是我的想法,但我想看到一些输入
arr=( 'forty' 'two' )
mapfile -t arr < <(printf '%s\n' "${arr[@]}")
declare -p arr