0% found this document useful (0 votes)
50 views14 pages

Practical Shell Script Examples

The document contains code for several Bash shell scripts with questions and code snippets to demonstrate shell scripting concepts like: - Printing text with different colors and effects using echo commands - Checking for correct number of command line arguments and printing errors - Performing math operations based on command line operators - Looping, conditional checks, variable assignment and manipulation The overall document appears to be part of a Linux shell scripting tutorial with examples for learning common shell scripting tasks and techniques.

Uploaded by

Raazia Mir
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC or read online on Scribd
0% found this document useful (0 votes)
50 views14 pages

Practical Shell Script Examples

The document contains code for several Bash shell scripts with questions and code snippets to demonstrate shell scripting concepts like: - Printing text with different colors and effects using echo commands - Checking for correct number of command line arguments and printing errors - Performing math operations based on command line operators - Looping, conditional checks, variable assignment and manipulation The overall document appears to be part of a Linux shell scripting tutorial with examples for learning common shell scripting tasks and techniques.

Uploaded by

Raazia Mir
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC or read online on Scribd

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@nixcraft.

com> # # Latest version can be found at [Link] # echo "Stars" for (( i=1; i<=5; i++ )) do for (( j=1; j<=i; j++ )) do echo -n " *" done echo "" done for (( i=5; i>=1; i-- )) do for (( j=1; j<=i; j++ )) do echo -n " *" done echo "" done # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link]

# MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read MAX_NO if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then echo "I ask to enter number between 5 and 9, Okay" exit 1 fi clear for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " $i" done echo "" done for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " ." done echo "" done echo -e "\n\n\t\t\tI hope you like it my stupidity (?)" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> #

# Latest version can be found at [Link] # clear for (( i=1; i<=3; i++ )) do for (( j=1; j<=i; j++ )) do echo -n "|Linux" done echo "______" done for (( i=3; i>=1; i-- )) do for (( j=1; j<=i; j++ )) do echo -n "|Linux" done if [ $i echo echo else echo fi -eq 3 ]; then -n "______" -n -e ">> Powerd Server.\n" "~~~~~"

done

# # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read MAX_NO if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then echo "I ask to enter number between 5 and 9, Okay" exit 1 fi

clear for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " $i" done echo "" done for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " ." done echo "" done echo -e "\n\n\t\t\tI hope you like it my stupidity (?)" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # MAX_NO=0 echo -n "Enter Number between (5 to 9) : " read MAX_NO if ! [ $MAX_NO -ge 5 -a $MAX_NO -le 9 ] ; then echo "I ask to enter number between 5 and 9, Okay"

fi

exit 1

clear for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " $i" done echo "" done for (( i=1; i<=MAX_NO; i++ )) do for (( s=MAX_NO; s>=i; s-- )) do echo -n " " done for (( j=1; j<=i; j++ )) do echo -n " ." done echo "" done echo -e "\n\n\t\t\tI hope you like it my stupidity (?)" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

Q.16. How to write script, that will print, Message "Hello World" , in Bold and Blink effect, and in different colors like red, brown etc using echo command.
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q16 # echo command with escape sequance to give differnt effects # # Syntax: echo -e "escape-code your message, var1, var2 etc" # For eg. echo -e "\033[1m Hello World" # | |

# # #

| Escape code

| Message

clear echo -e "\033[1m Hello World" # bold effect echo -e "\033[5m Blink" # blink effect echo -e "\033[0m Hello World" # back to noraml echo -e "\033[31m # Red color echo -e "\033[32m # Green color echo -e "\033[33m # See remaing on echo -e "\033[34m echo -e "\033[35m echo -e "\033[36m Hello World" Hello World" Hello World" screen Hello World" Hello World" Hello World"

echo -e -n "\033[0m " # back to noraml echo echo echo echo echo echo -e -e -e -e -e -e "\033[41m "\033[42m "\033[43m "\033[44m "\033[45m "\033[46m Hello Hello Hello Hello Hello Hello World" World" World" World" World" World"

echo -e "\033[0m Hello World" # back to noraml # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] # Q.1. How to write shell script that will add two nos, which are supplied as command line argument, and if this two nos are not given show error and its usage #!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # [Link] to sum to nos # if [ $# -ne 2 ]

then

echo "Usage - $0 x y" echo " Where x and y are two nos for which I will print sum" exit 1

fi

echo "Sum of $1 and $2 is `expr $1 + $2`" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] Script to find out biggest number from given three nos. Nos are supplies as command line argument. Print error if sufficient arguments are not supplied.
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q2. Script to find out bigest number # # Algo: # 1) START: Take three nos as n1,n2,n3. # 2) Is n1 is greater than n2 and n3, if yes # print n1 is bigest no goto step 5, otherwise goto next step # 3) Is n2 is greater than n1 and n3, if yes # print n2 is bigest no goto step 5, otherwise goto next step # 4) Is n3 is greater than n1 and n2, if yes # print n3 is bigest no goto step 5, otherwise goto next step # 5) END # # if [ $# -ne 3 ] then echo "$0: number1 number2 number3 are not given" >&2 exit 1 fi n1=$1 n2=$2 n3=$3 if [ $n1 -gt $n2 ] && [ $n1 -gt $n3 ] then echo "$n1 is Bigest number" elif [ $n2 -gt $n1 ] && [ $n2 -gt $n3 ] then echo "$n2 is Bigest number" elif [ $n3 -gt $n1 ] && [ $n3 -gt $n2 ] then

echo "$n3 is Bigest number" elif [ $1 -eq $2 ] && [ $1 -eq $3 ] && [ $2 -eq $3 ] then echo "All the three numbers are equal" else echo "I can not figure out which number is biger" fi # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] script to print nos as 5,4,3,2,1 using while loop.


#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q3 # Algo: # 1) START: set value of i to 5 (since we want to start from 5, if you # want to start from other value put that value) # 2) Start While Loop # 3) Chechk, Is value of i is zero, If yes goto step 5 else # continue with next step # 4) print i, decement i by 1 (i.e. i=i-1 to goto zero) and # goto step 3 # 5) END # i=5 while test $i != 0 do echo "$i " i=`expr $i - 1` done # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

Q.4. Write Script, using case statement to perform basic math operation as follows + addition - subtraction x multiplication

/ division The name of script must be 'q4' which works as follows $ ./q4 20 / 3, Also check for sufficient command line arguments
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q4 # if test $# = 3 then case $2 in +) let z=$1+$3;; -) let z=$1-$3;; /) let z=$1/$3;; x|X) let z=$1*$3;; *) echo Warning - $2 invalied operator, only +,-,x,/ operator allowed exit;; esac echo Answer is $z else echo "Usage - $0 value1 operator value2" echo " Where, value1 and value2 are numeric values" echo " operator can be +,-,/,x (For Multiplication)" fi # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] Script to see current date, time, username, and current directory
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q5 # echo "Hello, $LOGNAME" echo "Current date is `date`" echo "User is `who i am`"

echo "Current direcotry `pwd`" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] script to print given number in reverse order, for eg. If no is 123 it must print as 321.
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Script to reverse given no # # Algo: # 1) Input number n # 2) Set rev=0, sd=0 # 3) Find single digit in sd as n % 10 it will give (left most digit) # 4) Construct revrse no as rev * 10 + sd # 5) Decrment n by 1 # 6) Is n is greater than zero, if yes goto step 3, otherwise next step # 7) Print rev # if [ $# -ne 1 ] then echo "Usage: $0 number" echo " I will find reverse of given number" echo " For eg. $0 123, I will print 321" exit 1 fi n=$1 rev=0 sd=0 while [ $n -gt 0 ] do sd=`expr $n % 10` rev=`expr $rev \* 10 + $sd` n=`expr $n / 10` done echo "Reverse number is $rev" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] script to print given numbers sum of all digit, For eg. If no is 123 it's sum of all digit will be 1+2+3 = 6.
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Algo: # 1) Input number n # 2) Set sum=0, sd=0 # 3) Find single digit in sd as n % 10 it will give (left most digit) # 4) Construct sum no as sum=sum+sd # 5) Decrment n by 1 # 6) Is n is greater than zero, if yes goto step 3, otherwise next step # 7) Print sum # if [ $# -ne 1 ] then echo "Usage: $0 number" echo " I will find sum of all digit for given number" echo " For eg. $0 123, I will print 6 as sum of all digit (1+2+3)" exit 1 fi n=$1 sum=0 sd=0 while [ $n -gt 0 ] do sd=`expr $n % 10` sum=`expr $sum + $sd` n=`expr $n / 10` done echo "Sum of digit for numner is $sum" # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] script to determine whether given file exist or not, file name is supplied as command line argument, also check for sufficient number of command line argument
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link]

# # Q11 if [ $# -ne 1 ] then echo "Usage - $0 exit 1 fi

file-name"

if [ -f $1 ] then echo "$1 file exist" else echo "Sorry, $1 file does not exist" fi # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

Q.13. Write script to print contains of file from given line number to next given number of lines. For e.g. If we called this script as Q13 and run as $ Q13 5 5 myf , Here print contains of 'myf' file from line number 5 to next 5 line of that file.
#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <vivek@[Link]> # # Latest version can be found at [Link] # # Q13 # # Shell script to print contains of file from given line no to next # given numberlines # # # Print error / diagnostic for user if no arg's given # if [ $# -eq 0 ] then echo "$0:Error command arguments missing!" echo "Usage: $0 start_line uptoline filename" echo "Where start_line is line number from which you would like to print file" echo "uptoline is line number upto which would like to print" echo "For eg. $0 5 5 myfile" echo "Here from myfile total 5 lines printed starting from line no. 5 to" echo "line no 10." exit 1

fi # # Look for sufficent arg's # if [ $# -eq 3 ]; then if [ -e $3 ]; then tail +$1 $3 | head -n$2 else echo "$0: Error opening file $3" exit 2 fi else echo "Missing arguments!" fi # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

[Link] shell script to convert file names from UPPERCASE to lowercase file names or vice versa.
#!/bin/bash # # up2low : script to convert upercase filename to lowercase in current # working dir # Author : Vivek G. Gite <vivek@[Link]> # #Copy this file to your bin directory i.e. $HOME/bin as cp [Link] $HOME/bin # AWK_SCRIPT="[Link]" # # change your location here # awkspath=$HOME/bin/$AWK_SCRIPT ls -1 > /tmp/file1.$$ tr "[A-Z]" "[a-z]" < /tmp/file1.$$ > /tmp/file2.$$ paste /tmp/file1.$$ /tmp/file2.$$ > /tmp/tmpdb.$$ rm -f /tmp/file1.$$ rm -f /tmp/file2.$$ # # Make sure awk script exist # if [ -f $awkspath ]; then awk -f $awkspath /tmp/tmpdb.$$

else echo -e "\n$0: Fatal error - $awkspath not found" echo -e "\nMake sure \$awkspath is set correctly in $0 script\n" fi rm -f /tmp/tmpdb.$$ # # ./[Link]: [Link] to [Link] referance converted using this tool # See the tool at [Link] #

You might also like