On this page
Hello REDTM
#!/usr/bin/bash
#This is Comment
echo "Hello REDTM"
printf "Hello REDTM"
Save as hello.sh , give it execute permission chmod +x hello.sh and run ./hello.sh
Parameters
#!/usr/bin/bash
#This is Comment
echo -e "Hello $1"
printf "Hey, how is it goin $1?"
echo ""
$1 is the first parameters, second parameters should be $2 and so on.
Variables
Variables used to store data to use in future by referencing to the variable name! There are 4 type of variable we can use in bash. We can’t use Reserved word for variable names. Reserved words are:
if
then
elif
else
fi
time
for
in
until
while
do
done
case
esac
coproc
select
function
{ }
[[ ]]
!
- Integer: These are numeric variables
- String: “Text based variable”
- Constant: “These variable Can’t be modified”
- Array: “Index of variable”
Integer Variable
#!/bin/bash
##Integer Variable
job=$3
name=$1
#Integer Variable
exp=5
echo "$name having $exp+ experience in $job"
echo ""
String Variable
String variable is double quoted
#!/bin/bash
##String Variable
name="REDTM"
owner="Your name"
echo "The owner of $name is $owner"
echo "This is concated string: $name$owner"
Constant Variable
We can’t modify the variable. Two way to declare :
- Using
declare -r - Using
readonly
##String Variable
readonly name="REDTM"
declare -r var="You"
var="Me"
readonly name2="Red Teaming"
name2="Blue Teaming"
echo $name2
echo $var
Execute in terminal and see the live result.
Array Variable
More details on Appropriate chapter
Command Substitutions
Two we can substitute command
- Using double backqoute “`Command_Here`”
- Using
$(Command_here)
##Using backquote
passwd=`cat /etc/passwd`
##Using $ sign with first bracket
shadow="$(cat /etc/shadow)" #Without root, permission denied
issue="$(cat /etc/issue)"
#display contents
echo $passwd
echo $shadow
echo $issue
Operators
Here is the some list of commonly used operators
| Operator | Example | Description |
|---|---|---|
| = | variable=1, var2="redtm" |
Assign Variable. |
| +,-,/,* | var1=1;var1=2;var3=$((var1+var2)) |
Arithmetic Operator |
| +=, -=, *=, /= | var+=1, var-=1, var*=2, var/=2 |
Increment by +1, Decrement by -1, Multiply by 2, divide by 2 |
| & | bitwish AND | |
| ! | if [ ! -f $FILE] |
Not Operator |
| && | $condition1 && $condition2 |
And Operator |
| || | `$con1 |
Arrays
Bash support one-dimensional indexed. And the array index always start from 0. Way to declare an array:
declare -a array_name- Declare as variable but values in first brackets
arr1=(One two three) - Another way is
declare -a array_name=(one two three)
#!/usr/bin/bash
#Array Variables
declare -a arr1
arr1=("One Two Three" "Two" "Three")
echo ${arr1[0]}
To reference the array we need to use ${array_name[number]}
Conditional
Conditional is a test. This mean, parametrically test for Fail and Success Status and divert the execution somewhere! Bash also has primary expression for conditional statements!
Primary Expression
| Expression | Description |
|---|---|
| -a file | True if file exist |
| -b file | True if file exist and a block file |
| -c file | True if exist and it is a character special file |
| -d file | True if it is a directory file |
| -e file | True if file exist |
| -h file | True if it is exist and a symbolic file |
| -k file | True if it is exist and a sticky bit is set |
| -r file | True if the file exist and Readable |
| -s file | True if the file size is greater than 0 |
| -w file | True if File Exist and Writable |
| -x file | True if File Exist and executable |
| -G file | True if file exists and is owned by the effective group id. |
| -L file | True if file exists and is a symbolic link. |
| -N file | True if file exists and has been modified since it was last read. |
| -O file | True if file exists and is owned by the effective user id. |
| -S file | True if file exists and is a socket. |
| -z string | True if the length of string is zero. |
| string1 == string2, string1 = string2 | True if the strings are equal. |
| string1 != string2 | True if the strings are not equal. |
| string1 < string2 | True if string1 sorts before string2 lexicographically. |
| string1 > string2 | True if string1 sorts after string2 lexicographically. |
| -eq | Equal |
| -ne | Not Equal |
| -le | less than |
| -gt | greater than |
if
if/then/else
if/then/elif/else
Loop
Functions
Input/Output Redirections
Regular Expression
System Commands
It is not finished yet!