Oracle Live

07/10/2016

Linux – Scripting I

Filed under: Sistemas — mogukiller @ 8:20 am
Tags:

Conjunto de utilizades que utilizo en la mayoria de mis scripts.

-- ARRAYS
-- DEBUG SCRIPTS (set -x)
-- FUNCIONES
-- OPERACIONES ARITMETICAS
-- REDIRECCIONES
-- VARIABLES
-- DATE
-- PRINTF 
-- HABILITA | DESHABILITA  ECHO POR PANTALLA 

--------------------------------------------------
-- VARIABLES
--------------------------------------------------
-- Visualiza las variables de entrono

env 

-- Parametros de entrada

$0 .. Nombre del archivo
$1 ..$n
$#	:Parametros de entrada

-- PID del proceso

$!	--> Devuelve el PID del ultimo proceso ejecutado en background
$$	--> Devuelve el PID del proceso
$?	--> Resultado de la operacion

${variable:=valor}	--> Asignamos el valor a la variable
$(())
${#variable}		--> Longitud de la variable variable

-- Asignacion de variables

num_total =`wc -l mi_fichero.txt`

valor=${mi_variable1:-mi_valor}	--> Si no esta definido mi_variable lo sustituye por valor
valor=${mi_variable1:=mi_valor}	--> Tambien se lo asigna a mi_variable

$RANDOM		--> Genera un numero aleatorio

: ${ORACLE_SIDQ?"No esta definido"}	--> Comprobamos si la variable esta definida

$SECONDS --> Numero en segundos transcurridos desde que lance el script

---------------------------------------------------
-- DEBUG SCRIPTS (set -x)
---------------------------------------------------

set -x

Ejemplo:

#!/bin/ksh

set -x
while true
do
	fecha=`date +%X` 
	sleep 5
done

Salida:

+ true
+ date +%X
+ fecha=12:08:38
+ sleep 5
+ true
+ date +%X
+ fecha=12:08:43
+ sleep 5

---------------------------------------------------
-- REDIRECCIONES
---------------------------------------------------
-- Abre w/r al file_descriptor i . Si el fichero no existe lo crea

[i]<>file_name.txt

-- Redirecciona todo

echo "salida" &>/dev/null 

---------------------------------------------------
-- OPERACIONES ARITMETICAS
---------------------------------------------------

a=1
b=2

echo $[a+b]
echo $((a+b))
echo $((++a))		-->Preincremento
# a++ | ++a | a-- | *=

(( p++ ))		--> Asi incrementamos una variable


---------------------------------------------------
-- STRINGS
---------------------------------------------------

mi_cadena=abcdefghiabcd
echo ${#mi_cadena}	--> Longitud de la cadena #9
echo ${mi_cadena:1}	--> Substring	abcdefghi
echo ${mi_cadena:1:3}	--> Substring	bcd
echo ${mi_cadena:(-5)}	--> Substring  pero desde el final	efghi
echo ${mi_cadena#a*d}	--> Elimina la cadena entre la a y la d
echo ${mi_cadena##a*d}	--> Extrae la cadena entre la a y la d
echo ${mi_cadena%a*d}	--> Quita el string de la ultima parte abcdefghi
echo ${mi_cadena%%c*d}	--> #ab

echo ${mi_cadena/abc/zzz}	--> Remplaza la primera operacion de abc
echo ${mi_cadena//abc/zzz}	--> Remplaza todas las operaciones
echo ${mi_cadena/%abc/zzz}	--> Remplaza la primera de atras alante


---------------------------------------------------
-- ARRAYS
---------------------------------------------------
declare -a mi_array
mi_array=(uno dos tres)
mi_array[3]=cuatro
echo ${mi_array[*]}
echo ${mi_array[1]}

unset mi_array

for i in ${mi_array[@]}; do
echo ${mi_array[i]}
done

for i in #mi_array; do
echo ${mi_array[$i]}
done

echo "Numeros elementos:" ${#mi_array}

for i in `seq ${#mi_array}`; do
echo "Valor $i: "${mi_array[i]}
done

---------------------------------------------------
-- DATE
---------------------------------------------------

date +%Y/%m/%d" "%T		--> 2013/05/05 12:20:14
date +%s				--> 1367749648 
date -d "2013/05/05 00:00:00" '+%Y/%m/%d %T'
date -d "2013/05/05 00:00:00" '+%s'
date --date="1 hour ago" '+%m%d%H%M'	--> Restamos una hora

---------------------------------------------------
-- FUNCIONES
---------------------------------------------------

f1 ()
{
echo "$1"
}

f1 "Mensaje"

f1 ()
{
return ((++$1)) 
}

f1 "Mensaje"

-- Trabajamos con return

suma ()
{
	return 11
}

suma
echo $?

-- Pasamos parametros a una funcion

miFuncion ()
{
if [ -z "$1" ]; then
echo "No se ha pasado el parametro"
fi
}

miFuncion "Hola"

---------------------------------------------------
-- PRINTF
--------------------------------------------------- 

-- FORMAT STRINGS

%b		--> Interpreta el argumento sin tener en cuenta el tipo
%s		--> String
%d, %i	--> Decimal
%x		--> Hexadecimal
%o		--> Octal
%c		--> char


-- STRING MODIFIERS
.		--> Cuando la columna es mayor que la longitud trunca el texto
ie
printf "%.10s \n" "Valorrrrrrrrrrr mu largoooo"
SALIDA:
Valorrrrrr 

*		--> Justo antes del valor indicamos el ancho de la columna
ie:
anchura=25
printf "%*s \n" $anchura "VALOR"
ie 2:
printf "%*s\n" $(tput cols) "Hello world!" --Imprime al final de la linea

-		--> Alinea el texto a la izquierda (Por defecto a la derecha)
ie:
printf "%-10s \n" "ID"
printf "%s \n" "----------"
SALIDA:
ID         
---------- 
-- Escape codes

\\		--> Print \
\n		--> new line
\t		--> Tabulador
\''		--> Print '

---------------------------------------------------
-- HABILITA | DESHABILITA  ECHO POR PANTALLA 
---------------------------------------------------

Util para scripts que piden la pass por pantalla.

stty -echo
stty echo


Dejar un comentario »

Aún no hay comentarios.

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.

A %d blogueros les gusta esto: