使用链接到 stdin 的文件描述符而不是直接使用 stdin 的原因?
Reason to use File Descriptors Linked to stdin Rather than use stdin Directly?
我有一个 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 是一个包装器或定制的 - 通常虽然好处在单独的文件描述符上提供密码是为了保持标准输入打开以进行数据传输,顺便说一下,openssh scp 不支持
我有一个 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 是一个包装器或定制的 - 通常虽然好处在单独的文件描述符上提供密码是为了保持标准输入打开以进行数据传输,顺便说一下,openssh scp 不支持