首页 > 解决方案 > scp 在 subshel​​l 脚本中运行时没有列出

问题描述

我有一个my_script执行的 bash 脚本:

scp -- 'somehost:*.txt' dest_dir

现在,当我从交互式 shell 会话运行此脚本时,scp 会在复制文件时列出文件。但是当我运行第二个脚本时,包含:

exec 5>&1
foo=$(my_script | tee /dev/fd/5) || exit -1

(有关动机,请参阅此问题)- scp 在复制文件时不会列出文件。

这是为什么?除了使用之外,我还能绕过这个scp -v吗?

标签: bashscpsubshellverboseverbosity

解决方案


这是为什么?

scp程序检查输出是否为 tty,如果是,则打印进度。如果输出不是 tty,则不会打印进度信息。

除了使用 scp -v 之外,我还能绕过这个吗?

如何欺骗命令使其认为其输出将发送到终端

scp具体来说,预先调用with可能就足够了unbuffer

unbuffer scp -- 'somehost:*.txt' dest_dir

推荐阅读