我可以写一个文件并从中读取:
echo a > b.txt
read c < b.txt
Run Code Online (Sandbox Code Playgroud)
Bash是否能够隐含地这样做?就像是:
<turn on implicit mode>
echo a
read c
<turn off implicit mode>
Run Code Online (Sandbox Code Playgroud)
当"隐式模式"打开时,所有stdout都转到b.txt,所有stdin都从b.txt读取.我试过了:
exec > b.txt
Run Code Online (Sandbox Code Playgroud)
但它只影响标准输出.
您可以使用exec同时重定向stdin和stdout
exec > b.txt < b.txt
echo a
read c
Run Code Online (Sandbox Code Playgroud)
我不确定这是否会读到它写的内容,但我测试了它并且它有效.
您可以通过复制其他FD中的原始FD来还原它,然后在完成后还原它们.
exec 10<&0 11>&1 > b.txt < b.txt
echo a
read c
exec <&10 10<&- >&11 11>&-
echo $c
Run Code Online (Sandbox Code Playgroud)