"echo" 명령의 출력을 어떻게 주문합니까?

"echo" 명령의 출력을 어떻게 주문합니까?

쉘 스크립트를 사용하여 스크립트를 만들었고 스크립트의 출력은 다음과 같습니다.

여기에 이미지 설명을 입력하세요.

그러나 나는 출력이 다음과 같기를 원합니다.

여기에 이미지 설명을 입력하세요.

코드는 다음과 같습니다

if [ $CS == 0 ]; then
printf $BLUE
echo "$url$i            [Found]"
else
printf $RED
echo "$url$i            [Not Found]"
fi

답변1

printf형식화된 출력을 지원하는 명령문의 분기에서 이를 사용했습니다 . "찾음" 및 "찾을 수 없음" 조건에 대한 진리값을 포함한다고 가정하면 다음과 같습니다.trueif$CS

printf "$color%-50s%s$RESET\n" "$url" "$status"

여기서 $color는 원하는 색상의 ANSI 코드이고, $RESET는 ANSI 코드이며 \e[0m, 은 $url각각 $statusURL 문자열과 [Found] 또는 [Not Found] 상태 문자열입니다 .

다음은 완전한 예입니다. 참고 저는 이것을 shebang에서 사용하고 있지만 sh이것은 bash 구문과도 완벽하게 호환됩니다.

#!/bin/sh

BLUE="^[[0;34m"
RED="^[[0;31m"
RESET="^[[0m"

CS=0

for url in http://example.com/foo http://example.com/longer_address ; do
    if [ $CS -eq 0 ]; then
        color=$BLUE
        status='[Found]'
    else
        color=$RED 
        status='[Not Found]'
    fi

    printf "$color%-50s%s$RESET\n" "$url" "$status"

    CS=1 # Change truth condition for next test
done

관련 정보