即使部分行也缩进输出

即使部分行也缩进输出

我试图在脚本中缩进“子命令”的输出,如下所示:

Turning off image...
    Unmounting...done.
    Detaching loop device...done

其中缩进的项目是 期间执行的各个步骤Turning off image...

标准解决方案是使用sedet。等人。像这个问题但是,我的脚本中的某些步骤需要提示用户使用 确认操作read。由于提示符不是以换行符终止,因此sed直到命令完成后才会输出read。有没有解决的办法?

澄清:子命令之一本身正在read使用提示进行调用。当子命令通过管道传递时sedsed不会输出提示,因为它尚未以换行符终止。

这是示例代码(有点刻意地表达了观点):

function indent () { (set -o pipefail;  "$@" 2>&1 | sed 's/^/    /';); }

function some_cleanup () {
    # ... some commands
    read -rp "Do you want to force a dismount? (y/n)" yesno
    if [ "$yesno" = "yes" ]; then force_dismount; fi
}

indent some_cleanup

相关内容