Bash (Unix shell): Difference between revisions
| (20 intermediate revisions by the same user not shown) | |||
| Line 20: | Line 20: | ||
[https://linuxize.com/post/bash-if-else-statement/ https://linuxize.com/post/bash-if-else-statement/] | [https://linuxize.com/post/bash-if-else-statement/ https://linuxize.com/post/bash-if-else-statement/] | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
if [[ $VAR -gt 10 ]] then | if [[ $VAR -gt 10 ]]; then | ||
echo "The variable is greater than 10." | echo "The variable is greater than 10." | ||
elif [[ $VAR -eq 10 ]] then | elif [[ $VAR -eq 10 ]]; then | ||
echo "The variable is equal to 10." | echo "The variable is equal to 10." | ||
else | else | ||
| Line 30: | Line 30: | ||
[https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html bash if statements] | [https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html bash if statements] | ||
;Some common expressions: | |||
<syntaxhighlight lang="bash"> | |||
# File exists and is a regular file. | |||
[ -f $FILE ] | |||
# File is non-zero size | |||
[ -s $FILE ] | |||
# String has length zero | |||
[ -z $STR ] | |||
# String has length non-zero | |||
[ -n $STR ] | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
# Check if user is root (https://stackoverflow.com/questions/18215973/how-to-check-if-running-as-root-in-a-bash-script) | |||
if [ "$EUID" -ne 0 ]; then | |||
echo "Please run as root" | |||
exit | |||
fi | |||
</syntaxhighlight> | |||
===Comparisons=== | ===Comparisons=== | ||
| Line 35: | Line 54: | ||
* <code>-gt</code> is <code>></code> | * <code>-gt</code> is <code>></code> | ||
* <code>-ge</code> is <code>>=</code> | * <code>-ge</code> is <code>>=</code> | ||
===Arrays=== | ===Arrays=== | ||
| Line 50: | Line 66: | ||
/media/veracrypt7 | /media/veracrypt7 | ||
/media/veracrypt8 | /media/veracrypt8 | ||
) | ) | ||
# Add to the array | |||
DRIVES+=(/media/veracrypt9) | |||
for i in "${DRIVES[@]}" | for i in "${DRIVES[@]}" | ||
| Line 97: | Line 114: | ||
trap "exit" INT | trap "exit" INT | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
trap 'kill $(jobs -p)' EXIT | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== | ===Wait=== | ||
Add <code>wait</code> at the end of a script to wait for all subprocesses. | |||
= | ===Brace Expansion=== | ||
==Brace Expansion== | |||
When you type the following: | When you type the following: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
| Line 133: | Line 136: | ||
echo "${APPLES[@]}" | echo "${APPLES[@]}" | ||
</syntaxhighlight> | </syntaxhighlight> | ||
===<code>--</code>=== | |||
[https://unix.stackexchange.com/questions/11376/what-does-double-dash-mean Reference] | |||
<code>--</code> explicitly ends non-positional arguments for many commands | |||
===alias=== | |||
You can add aliases to your <code>.bashrc</code> to make commmon commands shorter. | |||
<syntaxhighlight lang="bash"> | |||
alias kc=kubectl | |||
alias tb="tensorboard --logdir" | |||
</syntaxhighlight> | |||
==dirname== | |||
[https://stackoverflow.com/questions/59895/how-to-get-the-source-directory-of-a-bash-script-from-within-the-script-itself Stack overflow] | |||
How to get the source directory of the bash script | |||
<syntaxhighlight lang="bash"> | |||
#!/bin/bash | |||
DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" | |||
cd "${DIR}" || exit 1 | |||
</syntaxhighlight> | |||
==Check if running as sudo== | |||
[https://stackoverflow.com/questions/18215973/how-to-check-if-running-as-root-in-a-bash-script Reference] | |||
<syntaxhighlight lang="bash"> | |||
if [ $EUID -ne 0 ] | |||
then echo "Please run as root" | |||
exit | |||
fi | |||
</syntaxhighlight> | |||
==<code>.bashrc</code>== | |||
Your <code>.bashrc</code> file will be loaded for each terminal.<br> | |||
===Presentation of Shell Variable (PS1)=== | |||
Add the following to show your current working directory. | |||
<syntaxhighlight lang="bash"> | |||
PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\n\$ ' | |||
</syntaxhighlight> | |||
[[Category:Programming languages]] | |||