Como posso solicitar a saída do comando “echo”?

2

Eu criei um script com shell script e a saída do script é:

maseuqueroserasaídaéassim:

eocódigoé:

if[$CS==0];thenprintf$BLUEecho"$url$i            [Found]"
else
printf $RED
echo "$url$i            [Not Found]"
fi
    
por Black Hawk 17.10.2015 / 03:10

1 resposta

2

Você já está usando printf na ramificação true da instrução if , que suporta saída formatada. Que tal algo assim, assumindo $CS contém o valor de verdade da sua condição "Encontrado" vs "Não encontrado":

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

Em que $color é o código ANSI da cor desejada, $RESET é o código ANSI \e[0m e $url e $status são a sequência de URL e as cadeias de status [Found] ou [Not Found] , respectivamente.

Aqui está um exemplo completo. Note que usei sh na shebang, mas isso também é totalmente compatível com a sintaxe 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
    
por 17.10.2015 / 03:32