如何在shell脚本中通过破折号关闭大于9的文件描述符

如何在shell脚本中通过破折号关闭大于9的文件描述符

我想在名为 system("sh example.sh") 的代码中启动一个 shell 脚本,并关闭所有文件描述符,如下所示:

for fd in $(ls /proc/$$/fd); do
   case "$fd" in
    0|1|2)
        ;;
    *)
        eval "exec $fd<&-"
        ;;
    esac
done

但它报告错误: example.sh 1: exec: 10: not found

linux shell是dash,似乎dash不能操作大于9的文件描述符。而且我无法访问其他linux shell,如bash,我应该怎么做才能关闭fds?谢谢。

相关内容