答案1
是的,这是一个问题,您永远无法从同一管道读取和写入。可以这样想:写入文件会将其设置为空,然后从中读取不会产生任何结果。
答案2
是的,并行读取和写入同一文件可能会导致竞争条件。使用同一命令对同一文件进行输入和输出重定向会在开始读取文件之前截断该文件。
但不,这不是这里发生的事情。这是 Shellcheck 中的误报。这里的重定向位于算术表达式内。所有替换(算术、变量、命令以及拆分和通配符)均在执行重定向之前执行。所以当> "$1"
打开文件时,读取位就完成了。
是的,这是一个问题,您永远无法从同一管道读取和写入。可以这样想:写入文件会将其设置为空,然后从中读取不会产生任何结果。
是的,并行读取和写入同一文件可能会导致竞争条件。使用同一命令对同一文件进行输入和输出重定向会在开始读取文件之前截断该文件。
但不,这不是这里发生的事情。这是 Shellcheck 中的误报。这里的重定向位于算术表达式内。所有替换(算术、变量、命令以及拆分和通配符)均在执行重定向之前执行。所以当> "$1"
打开文件时,读取位就完成了。