!!!The bash shell
These are programming notes for programming in the bash shell.
------
!Redirecting IO
{{{
2>file send stderr to file
2>&1 send stderr to stdout
}}}
--------------------------------------------------
!Accessing shell arguments
{{{
$0 command name
$1 first argument
$@ all arguments
$# number of arguments
shift shift arguments
}}}
--------------------------------------------------
!List iteration
(In this example, through all the arguments)
{{{
for var in $@; do
echo $var
done
}}}
--------------------------------------------------
!Variable assignment
{{{
var=val no space around =
}}}
--------------------------------------------------
!for loops
{{{
for ((i=1 ; i < 5 ; i++)); do
echo $i
done
}}}
--------------------------------------------------
!Arrays
Start from 0
{{{
a[3]=val assignment
${a[3]} get value
a=(val1 val2 val3) make array
${#a[@]} number of elements
${a[@]} all elements as a list
}}}
--------------------------------------------------
!Conditionals
{{{
if [ condition ]; then
....
elif [ condition ]; then
....
else
....
fi
}}}
--------------------------------------------------
!Conditions
{{{
-f file if file exists
-d dir if dir exists
a = b string equal
a != b string not equal
-z x string is null
x string is not null
x -eq y x numerically equal to y
x -ne y x numerically not equal to y
x -gt y x gretar than y
x -lt y x less than y
x -ge y x gretar than or equal to y
x -le y x less than or equal to y
! cond not condition
if [cond] && [cond]; then
...
}}}
------------------------------------
!here documents - inline input
{{{
cmd << label
..
..
..
label
}}}
all lines up to label are input into command