일부 줄이 포함되어 있어도 출력을 들여쓰기합니다.

일부 줄이 포함되어 있어도 출력을 들여쓰기합니다.

다음과 같은 스크립트에서 "하위 명령"의 출력을 들여쓰려고 합니다.

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

들여쓰기된 항목은 프로세스 중에 수행되는 단계입니다 Turning off image....

표준 솔루션은 sedet를 사용하는 것입니다. 외. 그림이 문제그러나 내 스크립트의 일부 단계에서는 사용자에게 확인 작업을 묻는 메시지를 표시해야 합니다 read. 프롬프트는 개행 문자로 끝나지 않으므로 sed명령이 완료될 때까지 출력이 없습니다 read. 해결책이 있나요?

밝히다:하위 명령 중 하나 자체가 read프롬프트를 사용하여 호출됩니다. 하위 명령 sed이 파이프되면 sed개행 문자로 끝나지 않았기 때문에 프롬프트가 출력되지 않습니다.

다음은 샘플 코드입니다(의미를 강조하기 위해 약간 의도한 것임).

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

관련 정보