Mar*_*mbo 1 bash io-redirection
这:
echo 'some text' > file.txt
cat file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)
显然给了我一个空文件。
但也令我惊讶的是:
cat2 () {
cat "$@" > tmp.txt
cat tmp.txt
return $?
}
echo 'some text' > file.txt
cat2 file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)
它给了我一个空文件,即使该文件tmp.txt
已被删除,与file.txt
.
这个方法也行不通!:
echo 'some text' > file.txt
cat file.txt | cat2 > file.txt
Run Code Online (Sandbox Code Playgroud)
为什么文件还是被清空了?
你的命令
cat2 file.txt > file.txt
Run Code Online (Sandbox Code Playgroud)
将在调用该函数file.txt
之前创建一个新的空cat2
。
因此,在运行时,cat2
文件是空的,因此cat
它将导致空输出。
如果它有助于打破操作顺序,那么您所做的是
这是因为重定向运算符发生在cat2
执行之前。
归档时间: |
|
查看次数: |
69 次 |
最近记录: |