我有一个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
?
答案 0 :(得分:3)
将stdin重定向到fd 3没有任何好处 - 而且PasswordFd似乎也不是一个openssh选项 - 似乎正在运行的scp是一个包装器或自定义构建 - 一般来说虽然提供密码的好处是单独的文件描述符是为了保持stdin打开数据传输btw openssh scp不支持