File: zzseq2.sh

package info (click to toggle)
funcoeszz 21.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 4,424 kB
  • sloc: sh: 27,355; perl: 509; xml: 54; makefile: 8
file content (60 lines) | stat: -rw-r--r-- 1,644 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# ----------------------------------------------------------------------------
# Mostra uma seqüência numérica, um número por linha.
# Obs.: Emulação do comando seq, presente no Linux, com melhorias adicionais.
# Uso: zzseq2 [número-inicial [step]] número-final [prefixo [sufixo]]
# Ex.: zzseq2 5
#      zzseq2 10 2 5 "Numero " ")"
#
# Autor: Itamar <itamarnet (a) yahoo com br>
# Desde: 2009-10-04
# Versão: 1
# Licença: GPL
# ----------------------------------------------------------------------------
# DESATIVADA: 2010-12-21 Funcionalidades implementadas na zzseq original.
zzseq2 ()
{
	zzzz -h seq2 $1 && return

	local inicio=1
	local fim=$1
	local step=1
	local saida prefixo sufixo

	# Verificação dos parâmetros
	[ "$1" ] || { zztool uso seq2; return; }
	
	# Se houver dois números, vai "do primeiro ao segundo"
	[ "$2" ] && inicio=$1 fim=$2
	
	# Se houver três números, vai "do primeiro ao segundo em saltos"
	[ "$3" ] && inicio=$1 fim=$3 step=$2

	# Se houver um quarto arqumento é tratado como prefixo
	[ "$4" ] && prefixo="$4"

	# Se houver um quito arqumento é tratado como sufixo
	[ "$5" ] && sufixo="$5"
	
	# Verificações básicas
	if ! (zztool testa_numero_sinal "$inicio" &&
	      zztool testa_numero_sinal "$fim" &&
	      zztool testa_numero_sinal "$step")
	then
		zztool uso seq2
		return
	fi
	
	# Se o primeiro for maior que o segundo, a contagem é regressiva
	if ([ $inicio -gt $fim ])
	then
		for ((saida=$inicio;saida>=$fim;saida-=$step))
		do
			echo ${prefixo}${saida}${sufixo}
		done
	else
		for ((saida=$inicio;saida<=$fim;saida+=$step))
		do
			echo ${prefixo}${saida}${sufixo}
		done
	fi
}