Hari Sundararajan Asked: 2018-10-19 03:28:40 +0800 CST2018-10-19 03:28:40 +0800 CST 2018-10-19 03:28:40 +0800 CST bash - 使用环境变量对文件描述符使用 exec 772 LOCK_FD=200 LOCK_FILE=/tmp/lock-file exec ${LOCK_FD}>${LOCK_FILE} 我收到一个错误 exec: 200 not found 然而,这有效 LOCK_FD=200 LOCK_FILE=/tmp/lock-file eval "exec ${LOCK_FD}>${LOCK_FILE}" 知道为什么吗? bash exec 1 个回答 Voted Best Answer RudiC 2018-10-19T04:05:10+08:002018-10-19T04:05:10+08:00 我认为这是因为重定向是在变量扩展之前执行的。man bash不太清楚哪个先完成: REDIRECTION 在执行命令之前,它的输入和输出可能会被重定向。. . EXPANSION 扩展是在命令行被拆分成单词后执行的。 完成并删除重定向后,exec尝试执行200不存在的,因此错误消息。
我认为这是因为重定向是在变量扩展之前执行的。
man bash
不太清楚哪个先完成:完成并删除重定向后,
exec
尝试执行200
不存在的,因此错误消息。