Getting started
Introduction
This is a quick reference to get started with Bash scripting.
- aprenda bash em y minutos (learnxinyminutes.com)
- Bash Guide (mywiki.wooledge.,td>
${FOO:(-3):3}
Substring from the right Length
Expression Description ${#FOO}
Length of $FOO
Manipulation
Default values
Omitting the
:
removes the (non)nullity checks, e.,g.${FOO-val}
expands toval
if unset otherwise$FOO
.,/div>Expression Description $#
Number of arguments $*
All arguments $@
All arguments, starting from first $1
First argument $_
Last argument of the previous command See Special parameters.,043f44″>
File conditions
Example
# Stringif ]; then echo "String is empty"elif ]; then echo "String is not empty"else echo "This never happens"fi
# Combinationsif ]; then ...fi
# Equalif ]
# Regexif ]
if (( $a < $b )); then echo "$a is smaller than $b"fi
if ]; then echo "file exists"fi
Arrays
Defining arrays
Fruits=('Apple' 'Banana' 'Orange')
Fruits="Apple"Fruits="Banana"Fruits="Orange"
Working with arrays
Operations
Iteration
for i in "${arrayName}"; do echo $idone
Dictionaries
Defining
declare -A sounds
sounds="bark"sounds="moo"sounds="tweet"sounds="howl"
Declares sound
as a Dictionary object (aka associative array).,
Trabalhar com dicionários
Iteração
Iterar sobre valores
for val in "${sounds}"; do echo $valdone
Iterar sobre as teclas
for key in "${!sounds}"; do echo $keydone
Opções
Opções
set -o noclobber # Avoid overlay files (echo "hi" > foo)set -o errexit # Used to exit upon error, avoiding cascading errorsset -o pipefail # Unveils hidden failuresset -o nounset # Exposes unset variables
Glob opções
Set GLOBIGNORE
como um separado por dois pontos, lista de padrões para ser removido da globmatches.,>
!-n
n
th most recent command!n
n
th command in history!<command>
<command>
Operations
!!
and !$
can be replaced with any valid expansion.,aec7ee5e”>
)
!^
!$
!!:n-m
!!:n-$
n
th token to last from most recent command!!
can be replaced with any valid expansion i.,e. !cat
!-2
!42
, etc.,
Special variables
Expression | Description |
---|---|
$? |
Exit status of last task |
$! |
PID of last background task |
$$ |
PID of shell |
$0 |
Filename of the shell script |
See Special parameters.,
pwd # /home/user/foocd bar/pwd # /home/user/foo/barcd -pwd # /home/user/foo
Check for command’s result
if ping -c 1 google.com; then echo "It appears you have a working internet connection"fi
Grep check
if grep -q 'foo' ~/.bash_history; then echo "You appear to have typed 'foo' in the past"fi