使用链接到stdin的文件描述符而不是直接使用stdin的原因



我有一个bash脚本,以以下方式启动scp:

echo "${SCP_PASS:-$PASSWORD}" | ( exec 3<&0; scp -qp ${SCP_PORT:+-P$SCP_PORT} -oStrictHostKeyChecking=yes -oPasswordFd=3 $TRANSFER_FILE "$SCP_USER@$SCP_HOST:$SCP_PATH" )

exec 3<&0的意义是什么?据我所知,它将stdin复制到文件描述符3。为什么需要这样做?为什么不用-oPasswordFd=0呢?

将stdin重定向到fd_3没有任何好处-而且PasswordFd似乎不是openssh选项-似乎正在运行的scp是包装器或定制的-一般来说,尽管在单独的文件描述符上提供密码的好处是保持stdin打开以进行数据传输,而openssh scp不支持

相关内容

  • 没有找到相关文章

最新更新