在(bash)shell 中使用文件描述符?

在(bash)shell 中使用文件描述符?

我遇到了以下一组用于读取和写入串行端口的 shell 命令,来自线:

stty -speed 19200 < /dev/ttyS0 # sets the speed of the port
exec 99<>/dev/ttyS0 (or /dev/ttyUSB0...etc)
printf "AT\r" >&99
read answer <&99  # this reads just a CR
read answer <&99  # this reads the answer OK
exec 99>&-

我无法理解使用文件描述符的行,特别是这两行:

exec 99<>/dev/ttyS0 (or /dev/ttyUSB0...etc)

exec 99>&-

他们在做什么?有什么理由99使用这个数字而不是其他数字吗?任何帮助表示赞赏。谢谢!

答案1

正如评论中提到的,这只是该文件处理程序的标识。就像STDIN有 ID 0、STDOUT有 ID 1、STDERR有 ID 2一样。

例如:

echo aa >/dev/null

echo aa 1>/dev/null

是相同的

相关内容