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 # => myfirstlinux
Input / Output Variable
read myinputvariable
echo "name $myinputvariable"
If Else Statement
if [[ $count -eq 100 ]]; then
echo "count is 100"
else
echo "no"
fi
File Existence Check
if [[ -e /file.txt ]]; then
echo "file exists"
fi
Check 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"
fi
Check Multiple Values
if [[ "$a" == "Monday" ]] || [[ "$a" == "Tuesday" ]]; then
echo "It's early week"
fi
File 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"
done
Indexed For Loop Example
i=1
for day in Mon Tue Wed Thu Fri; do
echo "Weekday $((i++)) : $day"
done
User Listing with For + AWK
i=1
for username in $(awk -F: '{print $1}' /etc/passwd); do
echo "Username $((i++)) : $username"
done
While Loop
c=1
while [[ $c -le 5 ]]; do
echo "Welcome $c times"
((c++))
done
Case 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";;
esac
Ping 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)