Bash Tutorials and snippets

Reading user input with timeout:

read -t

eg.

echo -n “Are you Sure ? ”

if read -t 5 response; then

echo ” Timed out, you didn’t make a selection”

else

echo “Ok proceeding”

fi

** Read with prompt :**

read -p “Enter Name: ” name

Get File Name from full path:

filename=$(basename $fullfile)

To Get the Extension:

extension=${filename##*.}

Filename without extension:

filename=${filename%.*}

Get Unix Timestamp:

stamp=date +%s

Unix Timestamp to Date :

date -d @

Testing If a file exists:

if [ -f testfile ]
then
echo testfile exists!
fi

[ d = directory  , s = file is not zero size , b = block device, c = character device, h = symbolic link, L = symlink, r = has read permission, w = has write permission, x = has execute permission, g,u,k = sgid, suid and sticky bit set , O = runner is owner, G= gid same as runner, N = modified since last run, f1 -nt f2  => f1 newer than f2 , f1 -ot f2=> older]

For Loop:

for i in seq 1 10;

do

echo $i

done

While Loop:

COUNTER=0
while [  $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER=COUNTER+1
done

Until Loop:

COUNTER=20
until [  $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done

If else :

T1=”foo”
T2=”bar”
if [ “$T1” = “$T2” ]; then
echo expression evaluated as true
else
echo expression evaluated as false
fi

Creating Menu with select:

OPTIONS=”Hello Quit”
select opt in $OPTIONS; do
if [ “$opt” = “Quit” ]; then
echo done
exit
elif [ “$opt” = “Hello” ]; then
echo Hello World
else
clear
echo bad option
fi
done

Checking Usage (Arguments ) :

if [ -z “$1” ]; then
echo usage: $0 directory
exit
fi

Getting Return Value :

Return value is obtained by special variable : $?

Capture command output into a variable :

DBS=mysql -uroot  -e”show databases”
for b in $DBS ;
do
mysql -uroot -e”show tables from $b”
done

String Comparision:

s1 = s2 => s1 matches s2

s1 != s2 => s1 does not match s2

-n s1 => s1 is not null (contains one or more characters)

-z s1 => s1 is null

Arithmetic Operators :

-lt (<)

-gt (>)

-le (<=)

-ge (>=)

-eq (==)

-ne (!=)

Check if last command Executed Successfully:

if [ $? -eq 0 ]; then 
 echo "Done"; 
else 
 echo "Didn't Work"; 
fi```