ajuda para criar script de shell para imprimir dia da semana e fim de semana

2

Como criar um programa simples usando loop e if.

meu código:

for i in mon tue wed thurs fri sat 
do
   echo weekday: $i
   if [ $i == thurs ]   
   then
      echo weekend: $i+1
   fi
done

e a saída:

weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: thurs+1
weekday: fri
weekday: sat

No entanto, quero ter uma saída como:

weekday: mon
weekday: tue
weekday: wed
weekday: thurs
weekend: fri
weekend: sat

Qual sintaxe eu perdi?

    
por fadilvilla 06.09.2016 / 05:29

1 resposta

5

Dado código:

for i in mon tue wed thurs fri sat 
do
 echo weekday: $i
  if [ $i == thurs ]    
    then
    echo weekend: $i+1
  fi
done
  • echo weekday: $i é chamado a cada iteração
  • O loop for produz um elemento a cada iteração para a variável i . i não é um índice de matriz, como você poderia esperar

Diferentes maneiras de obter o resultado esperado:

1) faça uma comparação de string

for i in mon tue wed thurs fri sat 
do
    if [ $i == fri ] || [ $i == sat ]
    then
        echo weekend: $i
    else
        echo weekday: $i
    fi
done

2) Use uma string para salvar o prefixo e modificá-lo dependendo de uma condição

s='weekday'
for i in mon tue wed thurs fri sat 
do
    echo "$s: $i"
    if [ $i == thurs ]
    then
        s='weekend'
    fi
done

3) Use um array

days=(mon tue wed thurs fri sat)

for ((i=0; i<${#days[@]}; i++))
do
    if (( i < 4 ))
    then
        echo "weekday: ${days[$i]}"
    else
        echo "weekend: ${days[$i]}"
    fi
done
    
por 06.09.2016 / 06:14