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}"
知道为什么吗?
答案1
我认为这是因为重定向是在变量扩展之前执行的。man bash
不太清楚哪个先完成:
重定向 在执行命令之前,其输入和输出可能会被重定向。 。 。
EXPANSION 扩展是在命令行被分割成单词后执行的。
完成并删除重定向后,exec
尝试执行200
不存在的内容,从而出现错误消息。