-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenum
More file actions
45 lines (35 loc) · 1.26 KB
/
enum
File metadata and controls
45 lines (35 loc) · 1.26 KB
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
#!/bin/sh
# oxr 2025
# Enumera una cantidad en sus integrantes o cuenta las palabras de una frase
#
# \\r enum [-e] [var] -c frase | nº [cº]
#
# 'var' nombre de la variable a la que asignar el resultado
# '-c' devuelve el numero de palabras de la frase
# 'nº' cantidad a enumerar
# 'cº' comienzo de la enumeracion, 0 por defecto
# '-e' muestra el resultado, si no 'var' ni '-c' tambien
#
# \\r enum x 3 ; for i in $x ; do ... ; done
#
# \\r enum -c $frase ; shift $?
#
# Debe incluirse '. enum' para que la asignacion a variable surta efecto
# EN PROCESO - FUNCIONA - INCLUIR
[ $include_ctl ] || . include ; include isnum
enum(){
local enum_v="" enum_n=0 enum_c=0 enum_r="" enum_e=false
[ $# -ne 0 ] || { infsh ~/code/enum 3 17 ; return ;}
while [ $# -ne 0 ] ; do case $1 in
-e) enum_e=true ; shift ;;
-c) shift ; set -- $@ ; [ ${#enum_v} -eq 0 ] || eval $enum_v=$#
$enum_e && echo $# ; return $# ;;
*) isnum $1 && enum_n=$1 || { enum_v=$1 ; shift ; continue ;} ; shift
isnum $1 && { enum_n=$((enum_n+$1)) ; enum_c=$1 ; shift ;} ;;
esac ; done
while [ $enum_c -lt $enum_n ] ; do enum_r=$enum_r"$enum_c " enum_c=$((enum_c+1)) ; done
[ ${#enum_v} -eq 0 ] && enum_e=true || eval $enum_v='$enum_r'
$enum_e && echo -n $enum_r
}
[ ${0##*/} != enum ] || enum "$@"
#