Here I have consolidated some of the basic shell scripting interview questions with their possible answers to help you practice and prepare for the interview. Now since these are scripting related questions, so there can be many possible answers, so if you know a better or easier way to work on these questions then use your preferred programming language.

Shell scripting interview questions
Question:
How can you create a script that will wait for specific output and hence
will act according to it? - for instance, wait for “username: ” before
sending the username.
Answer:
Linux provides a tool that “expects” a specific string and sending new
commands in response which called “expect”.
Question:
You want to add logger to your script so how can you send logging
messages to the /var/log/messages for your script “MyCoolScript”?
Answer:
Now to write to the messages file, you can use the logger tool which is
the syslogd api and send log messages -
logger -t MyCoolScript Starting Application….
Question:
Using perl, write a command that will
print
all the IPs, Bcasts and Masks configured on the server line by line.
Answer:
You need to extract the IPs from the ifconfig first, then run on each
line and get the required information -
ifconfig -a | perl -n -l -e '/ addr:([^ ].+)/ and print $1'
Question:
Write a shell script that checks if a file (as an argument) has write
permissions and accordingly if it is available print “write access
approved” else print “no write access”.
Answer:
#!/bin/bash
filename ="$1"
if [ -w "$filename" ]
then
echo "write access approved"
else
echo "no write access”;
fi
Question:
You have a bash script that does not produce the expected result so how
can you debug it?
Answer:
In order to debug a bash shell script, you need to add “-x” to the shell
execute line -
“#!/bin/bash -x”
Question:
You have a regular user access to a server, with no root permissions,
but you need to create a script that requires root permissions to run -
how can you manipulate the system to think that you have root
permissions, without a real superuser access?
Answer:
Linux provides a tool called fakeroot that allows you to run a “fake
root shell” that will present you as root and your id as 0, this will
make the system believe that you have root access for the current run.
Question:
Write a script that receives one parameters (file name) and checks if
the file exists or not - If it does, print “Roger that!” else, print
“Huston we’ve got a problem!”
Answer:
#!/bin/bash
FILE=$1
if [ -f $FILE ];
then
echo "Roger that!"
else
echo "Huston we’ve got a problem"
fi
Question:
Write a script that checks if a file, given as an argument, has more
than 10 lines or not, if it does - print “Over 10”, else print “Less
than 10”
Answer:
#!/bin/bash
count=`cat $1 | wc -l`
if [ "$count" -gt "10" ] ;
then
echo "Over 10"
else
echo "Less than 10"
fi
Question:
You need to create a backup script called “backupMyFiles” which will
run every hour, how do you make sure that your script is not already
running when you run the script - write a short script that will handle
this scenario and will exit with the message “Previous <command> is
still running” in case the script is still in the background so that
there is no conflict.
Answer:
To check if your script is currently running in the system - you can do
it with ps
#!/bin/bash
cmd=namedScript
runningProcs=`ps --no-headers -C${cmd}`
count=`echo $runningProcs|wc -l`
if [ $count -gt 1 ]; then
echo "Previous $cmd is still running."
exit 1
fi
Question:
Create a Fibonacci function (Fn=Fn-1+Fn-2) using awk
(until F20).
Answer:
awk 'BEGIN {
fa=1;
fb=1;
while(++i<=20)
{
print fa;
ft=fa;
fa=fa+fb;
fb=ft
};
exit}'
Question:
Write a script that will go over all the users on the system and will
write the last login date of the user, if we don’t have information
about the last login then write “No data for <username>”
Answer:
#!/bin/sh
for i in `cat /etc/passwd | awk -F: '{print $1; }'` ;
do
last=`last $i | head -n 1`;
if [ "$last" != "" ];
then
echo `last $i | head -n 1`;
else
echo "No data for $i"
fi
done
Question:
How can you check what are the most common commands that you have used
in the Linux shell?
Answer:
You can get this information from the history command and sort it by
most used.
$ history | awk '{h[$2]++}END{for (c in h){print h[c] " " c}}' | sort -nr | head
3 history
2 ls
1 hostname
1 cd
Question:
Write a script that goes to
http://www.whatismyip.org/ and then prints
“Your IP is: <Result from site>”.
Answer:
#!/bin/sh
ip=`links --source http://www.whatismyip.org/`
echo -n "Your IP is: "
echo $ip
Question:
Create a small calculator in bash script which will have an internal
function “dosomething” that will receive a math function as an input -
mycalc 4+4*4.
Answer:
#!/bin/bash
function dosomething {
echo "${1}"|bc -l;
}
dosomething $1
Question:
Create a script called KillUserProcs that will get a username as an
input and will kill all his processes.
Answer:
#!/bin/bash
kill -9 `ps aux|awk -v var=$1 '$1==var { print $2 }'`


