Bash/shaare/GmmPhQ
First Line of Script
- #!/bin/bash→ defines the shell interpreter
Comments
- Use #for commenting
Common Elements
- Commands: echo,cp, etc.
- Statements: if,while,for
- +x→ make the script executable
- Use absolute path to run: /home/userdir/myscript.bash
Variable Definition
a=hello
b=mytext- Usage:
echo "text1 $a"
echo "text2 $b"- Example:
a=$(hostname)
echo $a  # => myfirstlinuxInput / Output Variable
read myinputvariable
echo "name $myinputvariable"If Else Statement
if [[ $count -eq 100 ]]; then
  echo "count is 100"
else
  echo "no"
fiFile Existence Check
if [[ -e /file.txt ]]; then
  echo "file exists"
fiCheck If a Variable Matches a Value
a=$(date | awk '{print $1}')
if [[ "$a" == "Mon" ]]; then
  echo "Today is $a"
else
  echo "Today is not Monday"
fiCheck Multiple Values
if [[ "$a" == "Monday" ]] || [[ "$a" == "Tuesday" ]]; then
  echo "It's early week"
fiFile Operation Tests
- -s→ file exists and is not empty
- -f→ file exists and is a regular file
- -d→ directory exists
- -x→ file is executable
- -w→ file is writable
- -r→ file is readable
Comparison Operators
- -eq→ equal (numeric)
- =→ equal (string)
- -ne→ not equal (numeric)
- !=→ not equal (string)
- -lt→ less than
- -le→ less than or equal
- -gt→ greater than
- -ge→ greater than or equal
- $((...))→ arithmetic evaluation
For Loop Examples
for i in 1 2 3 4 5; do
  echo "Welcome $i times"
done
for i in eat run jump play; do
  echo "User $i"
done
for i in {1..5}; do
  touch $i
  echo "File $i created"
doneIndexed For Loop Example
i=1
for day in Mon Tue Wed Thu Fri; do
  echo "Weekday $((i++)) : $day"
doneUser Listing with For + AWK
i=1
for username in $(awk -F: '{print $1}' /etc/passwd); do
  echo "Username $((i++)) : $username"
doneWhile Loop
c=1
while [[ $c -le 5 ]]; do
  echo "Welcome $c times"
  ((c++))
doneCase Statement
echo "Choose function"
echo "A"
echo "B"
read choices  # could also use: read -s password for silent input
case $choices in
  A) date;;
  B) ls;;
  *) echo "Invalid choice";;
esacPing Check with Conditional
hosts="192.168.0.1"
ping -c1 $hosts &> /dev/null
if [[ $? -eq 0 ]]; then
  echo "$hosts OK"
else
  echo "$hosts NOT OK"
fi (19)
 (19)