Mil*_*ilo 11 bash redirect file-descriptor
在我的脚本中,我希望能够根据特定条件写入文件或stdout.我很好奇为什么这在我的脚本中不起作用:
out=\&1
echo "bird" 1>$out
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的引号组合,但我继续创建一个"&1"文件,而不是写入stdout.我该怎么做才能让我的工作方式如何?
一个可能更安全的替代方法eval是使用exec(在此示例中为文件描述符3)将目标复制到临时文件描述符中:
if somecondition; then exec 3> destfile; else exec 3>&1; fi
echo bird >&3
Run Code Online (Sandbox Code Playgroud)
bash我非常确定这与处理命令行的顺序有关。以下作品:
export out=\&1
eval "echo bird 1>${out}"
Run Code Online (Sandbox Code Playgroud)
因为变量替换发生在评估之前。