pruebas y practicas de bash
disclaimer: ejercicios y demás tomados de https://tldp.org/LDP/abs/html/index.html
Indicadores de que lo que va a correrse es un script de shell; el #! en realidad es un magic number que indica el file type
(Más info = https://en.wikipedia.org/wiki/Magic_number_(programming) )
#!/bin/sh
#!/bin/bash
#!/usr/bin/perl
#!/usr/bin/tcl
#!/bin/sed -f
#!/bin/awk -f
Al utilizar indicadores como los previamente mencionados se vuelve un script portable a sistemas que no son Linux; aunque se sacrifican algunas utilidades de Bash.
Si el path dado al script no es correcto, imprimirá un mensaje de "Command not found."
Si hay algo en la primera linea, el sha-bang pasará a ser considerado un comentario.
Los comentarios pueden aparecer en cualquier parte del script pero el # que inicia los comentarios puede estar en diferentes lugares que lo harían no formar parte del comentario. Por ejemplo:
echo "the # here does not begin a comment"
echo 'the # here does not begin a comment'
echo the /# here does not begin a comment
echo the # here begins a comment
echo ${PATH#*:} # Está substituyendo un parámetro, no haciendo un comentario.
echo $(( 2#101011 )) # Conversión, no hace comentario.
"" '' \ se consideran "quoting and escape", por lo cual no pueden tener un comentario dentro.
- "" -> También preserva la mayoría de los caracteres de ser interpretados.
- '' -> Conserva TODOS los caracteres de ser interpretados.
- , -> separa operaciones aritméticas y puede concatenar strings.
- ... -> "Operación no hacer nada"
- * -> wildcard o multiplicación aritmética
- ? -> Operador de testeo (EJ: condición? result-if-true:result-if-false) o wild card de un solo caracter
- $ -> Sustitución de variables o final de linea en una expresión regular
- ${} -> Sustitución de parámetros
- () -> Grupo de comandos o inicio de un array, doble es expansión de integral
- {} -> bloque de código, expansión de braces o extensión de brace expansion (EJ: {a..z} contiene todos los carácteres de A a Z)
- [] -> Test, elementos de un array, o rango de caracteres
-
$[ ... ] -> Expansión de integral (EJ: A=3, B=7 / $ [$A+$B] resulta en 10) - >, &>, >&, <<, >>, <, <> -> redirección
- <,> -> Comparadores de strings, integrers, etc.
- \< , \> -> limitación de palabras en expresiones regulares
- | -> pipe, pasa el resultado (stdout) de un comando dentro del input (stdin) de otro o a la shell. Se usa para vincular comanados.
- >| -> Redirección forzada
- & -> Los comandos seguidos por un & van a continuar ejecutandose pasivamente.
- && -> Operador lógico AND
- || -> operador lógico OR
En caso de dejar una variable vacía esta siempre tomará el valor de "null"; incluso si es usada en un lugar en específico o para una función.
Ejemplo:
echo ${var=abc} # Resulta en abc
echo ${var=xyz} # Resulta en abc, ya que fue declarada previamente.