0% found this document useful (0 votes)
188 views

Shell Programming 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)
Available Formats
Download as DOC or read online on Scribd
0% found this document useful (0 votes)
188 views

Shell Programming 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)
Available Formats
Download as DOC or read online on Scribd
You are on page 1/ 14

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

com> # # Latest version can be found at http://www.nixcraft.com/ # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <[email protected]> # # Latest version can be found at http://www.nixcraft.com/

# 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 (?)" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

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

# Latest version can be found at http://www.nixcraft.com/ # 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

# # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # 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 (?)" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

#!/bin/bash # # Linux Shell Scripting Tutorial 1.05r3, Summer-2002 # # Written by Vivek G. Gite <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # 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 (?)" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ # 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # Q1.Script 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`" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.2.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.3.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.5.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # Q5 # echo "Hello, $LOGNAME" echo "Current date is `date`" echo "User is `who i am`"

echo "Current direcotry `pwd`" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.6.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.7.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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" # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.11.Write 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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/

# # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

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 <[email protected]> # # Latest version can be found at http://www.nixcraft.com/ # # 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 # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

Q.21.Write 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 <[email protected]> # #Copy this file to your bin directory i.e. $HOME/bin as cp rename.awk $HOME/bin # AWK_SCRIPT="rename.awk" # # 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.$$ # # ./ch.sh: vivek-tech.com to nixcraft.com referance converted using this tool # See the tool at http://www.nixcraft.com/uniqlinuxfeatures/tools/ #

You might also like