Linux shell scripting lecture notes

what is linux shell scripting and what is linux shell scripting used for linux shell scripting tutorial - a beginner's handbook pdf free downlaod
Dr.NavneetSingh Profile Pic
Published Date:21-07-2017
Your Website URL(Optional)
Linux Shell Scripting Tutorial Linux Shell Scripting Tutorial Ver. 1.0 Written by Vivek G Gite I N D E X ● Introduction ❍ Kernel ❍ Shell ❍ How to use Shell ❍ Common Linux Command Introduction ● Process ❍ Why Process required ❍ Linux commands related with process ● Redirection of Standard output/input ❍ Redirectors ❍ Pipes ❍ Filters ● Shell Programming ❍ Variables in Linux ❍ How to define User defined variables ❍ Rules for Naming variable name ❍ How to print or access value of UDV (User defined variables) ❍ How to write shell script ❍ How to Run Shell Scripts ❍ Quotes in Shell Scripts (1 of 2) 17/08/2001 17.41.52Linux Shell Scripting Tutorial ❍ Shell Arithmetic ❍ Command Line Processing (Command Line Arguments) ❍ Why Command Line arguments required ❍ Exit Status ❍ Filename Shorthand or meta Characters (i.e. wild cards) ● Programming Commands ❍ echo command ❍ Decision making in shell script ( i.e. if command) ❍ test command or expr ❍ Loop in shell scripts ❍ The case Statement ❍ The read Statement ● More Advanced Shell Script Commands ❍ /dev/null - Use to send unwanted output of program ❍ Local and Global Shell variable (export command) ❍ Conditional execution i.e. && and ❍ I/O Redirection and file descriptors ❍ Functions ❍ User Interface and dialog utility ❍ trap command ❍ getopts command ❍ More examples of Shell Script (Exercise for You :-) © 1998-2000 (I) Pvt. Ltd. All rights reserved. (2 of 2) 17/08/2001 17.41.52Linux Shell Script Tutorial Introduction This tutorial is designed for beginners only and This tutorial explains the basics of shell programming by showing some examples of shell programs. Its not help or manual for the shell. While reading this tutorial you can find manual quite useful ( type man bash at prompt to see manual pages). Manual contains all necessary information you need, but it won't have that much examples, which makes idea more clear. For that reason, this tutorial contains examples rather than all the features of shell. I assumes you have at least working knowledge of Linux i.e. basic commands like how to create, copy, remove files/directories etc or how to use editor like vi or mcedit and login to your system. Before Starting Linux Shell Script Programming you must know ● Kernel ● Shell ● Process ● Redirectors, Pipes, Filters etc. What's Kernel Kernel is hart of Linux O/S. It manages resource of Linux O/S. Resources means facilities available in Linux. For eg. Facility to store data, print data on printer, memory, file management etc . Kernel decides who will use this resource, for how long and when. It runs your programs (or set up to execute binary files) It's Memory resident portion of Linux. It performance following task :- ● I/O management ● Process management ● Device management ● File management ● Memory management What's Linux Shell Computer understand the language of 0's and 1's called binary language, In early days of computing, instruction are provided using binary language, which is difficult for all of us, to read and write. So in O/s there is special program called Shell. Shell accepts your instruction or commands in English and translate it into computers native binary language. This is what Shell Does for US (1 of 5) 17/08/2001 17.42.02Linux Shell Script Tutorial You type Your command and shell convert it as It's environment provided for user interaction. Shell is an command language interpreter that executes commands read from the standard input device (keyboard) or from a file. Linux may use one of the following most popular shells (In MS-DOS, Shell name is COMMAND.COM which is also used for same purpose, but it's not as powerful as our Linux Shells are) Shell Name Developed by Where Remark Most common shell in BASH ( Bourne-Again Brian Fox and Chet Free Software Linux. It's Freeware SHell ) Ramey Foundation shell. The C shell's syntax and University of California usage are very similar to  CSH (C SHell) Bill Joy (For BSD) the C programming language.  KSH (Korn SHell) David Korn  AT & T Bell Labs   Any of the above shell reads command from user (via Keyboard or Mouse) and tells Linux O/s what users want. If we are giving commands from keyboard it is called command line interface ( Usually in-front of prompt, This prompt is depend upon your shell and Environment that you set or by your System Administrator, therefore you may get different prompt ). NOTE: To find your shell type following command echo SHELL How to use Shell To use shell (You start to use your shell as soon as you log into your system) you have to simply type commands. Following is the list of common commands. Linux Common Commands NOTE that following commands are for New users or for Beginners only. The purpose is if you use this command you will be more familiar with your shell and secondly, you need some of these command in your Shell script. If you want to get more information or help for this command try following commands For e.g. To see help or options related with date command try date help or To see help or options related with ls command (Here you will screen by screen help, since help of ls command is quite big that can't fit on single screen ) (2 of 5) 17/08/2001 17.42.02Linux Shell Script Tutorial ls help more Syntax:    command-name   help Syntax:    man   command-name Syntax:    info   command-name See what happened when you type following man ls info bash NOTE: In MS-DOS, you get help by using /? clue or by typing help command as C:\ dir /? C:\ date /? C:\ help time C:\ help date C:\ help Linux Command Example ( In front of For this Purpose Use this Command Syntax Prompt) To see date date date To see who's using who who system. Print working directory pwd pwd List name of files in ls   or  dirs ls current directory cat  myfile To create text file     type your text NOTE: Press and hold     when done press CTRL key and press D to cat     file name D stop or to end file   (CTRL+D)   To text see files cat        file name cat   myfile To display file one full more     file name more   myfile screen at a time To move or rename mv   sales    mv         file1        file2  file/directory sales.99 To create multiple file copies with various link. After this both oldfile ln          oldfile      newfile   ln    Page1    Book1 newfile refers to same name To remove file rm   file1 rm    myfile (3 of 5) 17/08/2001 17.42.02Linux Shell Script Tutorial Remove all files in given directory/subdirectory. rm     -rf       dirname rm   -rf     oldfiles Use it     very carefully. To change file access chmod   permissions u+x,g+wx,o+x    myscript  u - User who owns the NOTE: This command set file permission for file called   g - Group file owner 'myscript' as User (Person  o - User classified as who creates that file or other directory) has execute    chmod  ugoa  +- rwx    filename  a - All other system user permission (u+x) Group of file owner can write to this  + Set permission file as well as execute  this  - Remove permission file (g+wx) Others can   only execute file but can not modify it, Since we  r - Read permission have not given w (write  w - Write permission permission) to them. (o+x).  x - Execute permission Read your mail. mail mail To See more about currently login person who am i who am i (i..e. yourself) logout (Note: It may ask you password type your login password, To login out logout  (OR press CTRL+D) In some case this feature is disabled by System Administrator) Send mail to other person mail     user-name mail    ashish To count lines, words and wc       file-name wc     myfile characters of given file To searches file for line grep   fox    grep     word-to-lookup    filename that match a pattern. myfile To sort file in following order -r   Reverse normal order sort     -r   -n   -nr     filename  sort    myfile -n  Sort in numeric order -nr Sort in reverse numeric order (4 of 5) 17/08/2001 17.42.02Linux Shell Script Tutorial To print last first line of tail    - +    linenumber         filename tail  +5   myfile given file cmp             file1          file2 cmp     myfile  To Use to compare files                                OR myfile.old diff                file1         file2 To print file pr                 file-name pr       myfile © 1998-2000 (I) Pvt. Ltd. All rights reserved. (5 of 5) 17/08/2001 17.42.02Linux Shell Script Tutorial What is Processes Process is any kind of program or task carried out by your PC. For e.g. ls -lR , is command or a request to list files in a directory and all subdirectory in your current directory. It is a process. A process is program (command given by user) to perform some Job. In Linux when you start process, it gives a number (called PID or process-id), PID starts from 0 to 65535. Why Process required Linux is multi-user, multitasking o/s. It means you can run more than two process simultaneously if you wish. For e.g.. To find how many files do you have on your system you may give command like ls / -R wc -l This command will take lot of time to search all files on your system. So you can run such command in Background or simultaneously by giving command like ls / -R wc -l & The ampersand (&) at the end of command tells shells start command (ls / -R wc -l) and run it in background takes next command immediately. An instance of running command is called process and the number printed by shell is called process-id (PID), this PID can be use to refer specific running process. Linux Command Related with Process For this purpose Use this Command Example To see currently running ps ps process  To stop any process i.e. to kill    PID kill  1012 kill process To get information about all ps -ag ps -ag running process To stop all process except kill 0 kill 0 your shell For background processing (With &, use to put particular  linux-command  & ls / -R wc -l & command and program in background) NOTE that you can only kill process which are created by yourself. A Administrator can almost kill 95-98% process. But some process can not be killed, such as VDU Process. © 1998-2000 (I) Pvt. Ltd. All rights reserved. 17/08/2001 17.42.03Linux Shell Script Tutorial Redirection of Standard output/input or Input - Output redirection Mostly all command gives output on screen or take input from keyboard, but in Linux it's possible to send output to file or to read input from file. For e.g. ls command gives output to screen; to send output to file of ls give command , ls filename. It means put output of ls command to filename. There are three main redirection symbols ,, (1) Redirector Symbol Syntax: Linux-command filename To output Linux-commands result to file. Note that If file already exist, it will be overwritten else new file is created. For e.g. To send output of ls command give ls myfiles Now if 'myfiles' file exist in your current directory it will be overwritten without any type of warning. (What if I want to send output to file, which is already exist and want to keep information of that file without loosing previous information/data?, For this Read next redirector) (2) Redirector Symbol Syntax: Linux-command filename To output Linux-commands result to END of file. Note that If file exist , it will be opened and new information / data will be written to END of file, without losing previous information/data, And if file is not exist, then new file is created. For e.g. To send output of date command to already exist file give date myfiles (3) Redirector Symbol Syntax: Linux-command filename To take input to Linux-command from file instead of key-board. For e.g. To take input for cat command give cat myfiles Pips A pipe is a way to connect the output of one program to the input of another program without any temporary file. (1 of 2) 17/08/2001 17.42.10Linux Shell Script Tutorial A pipe is nothing but a temporary storage place where the output of one command is stored and then passed as the input for second command. Pipes are used to run more than two commands ( Multiple commands) from same command line. Syntax: command1 command2 Command using Pips Meaning or Use of Pipes Here the output of ls command is given as input to ls more more command So that output is printed one screen full page at a time Here output of who command is given as input to who sort  sort command So that it will print sorted list of users Here output of who command is given as input to who wc -l  wc command So that it will number of user who logon to system Here output of ls command is given as input to wc ls -l wc  -l    command So that it will print number of files in current directory.  Here output of who command is given as input to grep command So that it will print if particular user who grep raju name if he is logon or nothing is printed ( To see for particular user logon) Filter If a Linux command accepts its input from the standard input and produces its output on standard output is know as a filter. A filter performs some kind of process on the input and gives output. For e.g.. Suppose we have file called 'hotel.txt' with 100 lines data, And from 'hotel.txt' we would like to print contains from line number 20 to line number 30 and store this result to file called 'hlist' then give command tail +20 hotel.txt head -n30 hlist Here head is filter which takes its input from tail command (tail command start selecting from line number 20 of given file i.e. hotel.txt) and passes this lines to input to head, whose output is redirected to 'hlist' file. © 1998-2000 (I) Pvt. Ltd. All rights reserved. (2 of 2) 17/08/2001 17.42.10Linux Shell Script Tutorial Introduction to Shell Programming Shell program is series of Linux commands. Shell script is just like batch file is MS-DOS but have more power than the MS-DOS batch file. Shell script can take input from user, file and output them on screen. Useful to create our own commands that can save our lots of time and to automate some task of day today life. Variables in Linux Sometimes to process our data/information, it must be kept in computers RAM memory. RAM memory is divided into small locations, and each location had unique number called memory location/address, which is used to hold our data. Programmer can give a unique name to this memory location/address called memory variable or variable (Its a named storage location that may take different values, but only one at a time). In Linux, there are two types of variable 1) System variables - Created and maintained by Linux itself. This type of variable defined in CAPITAL LETTERS. 2) User defined variables (UDV) - Created and maintained by user. This type of variable defined in lower LETTERS. Some System variables You can see system variables by giving command like set, Some of the important System variables are System Variable Meaning  BASH=/bin/bash   Our shell name BASH_VERSION=1.14.7(1) Our shell version name COLUMNS=80   No. of columns for our screen HOME=/home/vivek  Our home directory LINES=25  No. of columns for our screen LOGNAME=students  Our logging name OSTYPE=Linux   Our o/s type : -) PATH=/usr/bin:/sbin:/bin:/usr/sbin Our path settings PS1=\u\h \W\  Our prompt settings PWD=/home/students/Common Our current working directory SHELL=/bin/bash  Our shell name USERNAME=vivek User name who is currently login to this PC NOTE that Some of the above settings can be different in your PC. You can print any of the above variables contain as follows echo USERNAME echo HOME Caution: Do not modify System variable this can some time create problems. How to define User defined variables (UDV) To define UDV use following syntax Syntax: variablename=value NOTE: Here 'value' is assigned to given 'variablename' and Value must be on right side = sign For e.g. no=10     this is ok 10=no     Error, NOT Ok, Value must be on right side of = sign. To define variable called 'vech' having value Bus (1 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial vech=Bus To define variable called n having value 10 n=10 Rules for Naming variable name (Both UDV and System Variable) (1) Variable name must begin with Alphanumeric character or underscore character (_), followed by one or more Alphanumeric character. For e.g. Valid shell variable are as follows HOME SYSTEM_VERSION vech no (2) Don't put spaces on either side of the equal sign when assigning value to variable. For e.g.. In following variable declaration there will be no error no=10 But here there will be problem for following no     =10 no=     10 no     =     10 (3) Variables are case-sensitive, just like filename in Linux. For e.g. no=10 No=11 NO=20 nO=2 Above all are different variable name, so to print value 20 we have to use echo NO and Not any of the following echo no        will print 10 but not 20 echo No        will print 11 but not 20 echo nO        will print 2 but not 20 (4) You can define NULL variable as follows (NULL variable is variable which has no value at the time of definition) For e.g. vech= vech="" Try to print it's value echo vech , Here nothing will be shown because variable has no value i.e. NULL variable. (5) Do not use ?, etc, to name your variable names. How to print or access value of UDV (User defined variables) To print or access UDV use following syntax Syntax: variablename For eg. To print contains of variable 'vech' echo vech It will print 'Bus' (if previously defined as vech=Bus) ,To print contains of variable 'n' echo n It will print '10' (if previously defined as n=10) Caution: Do not try echo vech It will print vech instead its value 'Bus' and echo n, It will print n instead its value '10', You must use followed by variable name. Q.1.How to Define variable x with value 10 and print it on screen x=10 echo x (2 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial Q.2.How to Define variable xn with value Rani and print it on screen xn=Rani echo xn Q.3.How to print sum of two numbers, let's say 6 and 3 echo 6 + 3 This will print 6 + 3, not the sum 9, To do sum or math operations in shell use expr, syntax is as follows Syntax: expr   op1   operator   op2 Where, op1 and op2 are any Integer Number (Number without decimal point) and operator can be + Addition - Subtraction / Division % Modular, to find remainder For e.g. 20 / 3 = 6 , to find remainder 20 % 3 = 2, (Remember its integer calculation) \ Multiplication expr 6 + 3 Now It will print sum as 9 , But expr 6+3 will not work because space is required between number and operator (See Shell Arithmetic) Q.4.How to define two variable x=20, y=5 and then to print division of x and y (i.e. x/y) x=20 y=5 expr x / y Q.5.Modify above and store division of x and y to variable called z x=20 y=5 z=`expr x / y` echo z Note : For third statement, read Shell Arithmetic. How to write shell script Now we write our first script that will print "Knowledge is Power" on screen. To write shell script you can use in of the Linux's text editor such as vi or mcedit or even you can use cat command. Here we are using cat command you can use any of the above text editor. First type following cat command and rest of text as its cat first My first shell script clear echo "Knowledge is Power" Press Ctrl + D to save. Now our script is ready. To execute it type command ./first This will give error since we have not set Execute permission for our script first; to do this type command chmod +x first ./first First screen will be clear, then Knowledge is Power is printed on screen. To print message of variables contains we user echo command, general form of echo command is as follows echo "Message" echo "Message variable1, variable2....variableN" (3 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial How to Run Shell Scripts Because of security of files, in Linux, the creator of Shell Script does not get execution permission by default. So if we wish to run shell script we have to do two things as follows (1) Use chmod command as follows to give execution permission to our script Syntax: chmod    +x    shell-script-name OR Syntax: chmod    777    shell-script-name (2) Run our script as Syntax: ./your-shell-program-name For e.g. ./first Here '.'(dot) is command, and used in conjunction with shell script. The dot(.) indicates to current shell that the command following the dot(.) has to be executed in the same shell i.e. without the loading of another shell in memory. Or you can also try following syntax to run Shell Script Syntax: bash &nbsh;&nbsh; your-shell-program-name OR /bin/sh &nbsh;&nbsh; your-shell-program-name For e.g. bash first /bin/sh first Note that to run script, you need to have in same directory where you created your script, if you are in different directory your script will not run (because of path settings), For eg. Your home directory is ( use pwd to see current working directory) /home/vivek. Then you created one script called 'first', after creation of this script you moved to some other directory lets say /home/vivek/Letters/Personal, Now if you try to execute your script it will not run, since script 'first' is in /home/vivek directory, to Overcome this problem there are two ways First, specify complete path of your script when ever you want to run it from other directories like giving following command /bin/sh /home/vivek/first Now every time you have to give all this detailed as you work in other directory, this take time and you have to remember complete path. There is another way, if you notice that all of our programs (in form of executable files) are marked as executable and can be directly executed from prompt from any directory (To see executables of our normal program give command ls -l /bin or ls -l /usr/bin) by typing command like bc cc myprg.c cal etc, How this happed? All our executables files are installed in directory called /bin and /bin directory is set in your PATH setting, Now when you type name of any command at prompt, what shell do is it first look that command in its internal part (called as internal command, which is part of Shell itself, and always available to execute, since they do not need extra executable file), if found as internal command shell will execute it, If not found It will look for current directory, if found shell will execute command from current directory, if not found, then Shell will Look PATH setting, and try to find our requested commands executable file in all of the directories mentioned in PATH settings, if found it will execute it, otherwise it will give message "bash: xxxx :command not found", Still there is one question remain can I run my shell script same as these executables. Yes you can, for (4 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial this purpose create bin directory in your home directory and then copy your tested version of shell script to this bin directory. After this you can run you script as executable file without using ./shell script-name syntax, Following are steps cd mkdir bin cp first /bin first Each of above command Explanation Each of above command Explanation cd Go to your home directory Now created bin directory, to install your own shell mkdir bin script, so that script can be run as independent program or can be accessed from any directory cp   first /bin copy your script 'first' to your bin directory first Test whether script is running or not (It will run) In shell script comment is given with character. This comments are ignored by your shell. Comments are used to indicate use of script or person who creates/maintained script, or for some programming explanation etc. Remember always set Execute permission for you script. Commands Related with Shell Programming (1)echo options string, variables... Displays text or variables value on screen. Options -n Do not output the trailing new line. -e Enable interpretation of the following backslash escaped characters in the strings: \a alert (bell) \b backspace \c suppress trailing new line \n new line \r carriage return \t horizontal tab \\ backslash For eg. echo -e "An apple a day keeps away \a\t\tdoctor\n" (2)More about Quotes There are three types of quotes " i.e. Double Quotes ' i.e. Single quotes ` i.e. Back quote 1."Double Quotes" - Anything enclose in double quotes removed meaning of that characters (except \ and ). 2. 'Single quotes' - Enclosed in single quotes remains unchanged. 3. `Back quote` - To execute command. For eg. echo "Today is date" Can't print message with today's date. echo "Today is `date`". Now it will print today's date as, Today is Tue Jan ....,See the `date` statement uses back quote, (See also Shell Arithmetic NOTE). (3) Shell Arithmetic (5 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial Use to perform arithmetic operations For e.g. expr 1 + 3 expr 2 - 1 expr 10 / 2 expr 20 % 3 remainder read as 20 mod 3 and remainder is 2) expr 10 \ 3 Multiplication use \ not since its wild card) echo `expr 6 + 3` For the last statement not the following points 1) First, before expr keyword we used ` (back quote) sign not the (single quote i.e. ') sign. Back quote is generally found on the key under tilde () on PC keyboards OR To the above of TAB key. 2) Second, expr is also end with ` i.e. back quote. 3) Here expr 6 + 3 is evaluated to 9, then echo command prints 9 as sum 4) Here if you use double quote or single quote, it will NOT work, For eg. echo "expr 6 + 3"     It will print expr 6 + 3 echo 'expr 6 + 3' Command Line Processing Now try following command (assumes that the file "grate_stories_of" is not exist on your disk) ls grate_stories_of It will print message something like - grate_stories_of: No such file or directory Well as it turns out ls was the name of an actual command and shell executed this command when given the command. Now it creates one question What are commands? What happened when you type ls grate_stories_of? The first word on command line, ls, is name of the command to be executed. Everything else on command line is taken as arguments to this command. For eg. tail +10 myf Here the name of command is tail, and the arguments are +10 and myf. Now try to determine command and arguments from following commands: ls     foo cp    y     y.bak mv    y.bak     y.okay tail    -10     myf mail     raj sort     -r    -n     myf date clear  Command No. of argument  to this command Actual Argument ls 1 foo cp 2 y  and   y.bak mv 2 y.bak and  y.okay tail 2 -10  and  myf mail 1 raj sort 3 -r, -n, and myf date 0   clear 0   NOTE: holds number of arguments specified on command line. and or refer to all arguments in passed to script. Now to obtain total no. of Argument to particular script, your variable. Why Command Line arguments required (6 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial Let's take rm command, which is used to remove file, But which file you want to remove and how you will you tail this to rm command (Even rm command does not ask you name of file that would like to remove). So what we do is we write as command as follows rm    file-name Here rm is command and file-name is file which you would like to remove. This way you tail to rm command which file you would like to remove. So we are doing one way communication with our command by specifying file-name. Also you can pass command line arguments to your script to make it more users friendly. But how we address or access command line argument in our script. Lets take ls command ls -a / This command has 2 command line argument -a and / is another. For shell script, myshell  foo  bar Shell Script name i.e. myshell First command line argument passed to myshell i.e. foo Second command line argument passed to myshell i.e. bar In shell if we wish to refer this command line argument we refer above as follows myshell it is 0 foo it is 1 bar it is 2 Here will be 2 (Since foo and bar only two Arguments), Please note At a time such 9 arguments can be used from 0..9, You can also refer all of them by using (which expand to `0,1,2...9`) Now try to write following for commands, Shell Script Name (0), No. of Arguments (i.e. ), And actual argument (i.e. 1,2 etc) sum   11   20 math   4   -   7 d bp   -5   myf   +20 ls    cal findBS   4   8   24   BIG Shell Script Name  No. Of Arguments to script Actual Argument (1,..9) 0 0 1 2 3 4 sum 2 11 20       math 3 4 - 7     d 0  (7 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial bp 3 -5 myf +20     ls 1         cal 0           findBS 4 4 8 24 BIG   For e.g. now will write script to print command ling argument and we will see how to access them cat demo /bin/sh Script that demos, command line args echo "Total number of command line argument are " echo "0 is script name" echo "1 is first argument" echo 2 is second argument" echo "All of them are :- " Save the above script by pressing ctrl+d, now make it executable chmod +x demo ./demo Hello World cp demo /bin demo Note: After this, For any script you have to used above command, in sequence, I am not going to show you all of the above. (5)Exit Status By default in Linux if particular command is executed, it return two type of values, (Values are used to see whether command is successful or not) if return value is zero (0), command is successful, if return value is nonzero (0), command is not successful or some sort of error executing command/shell script. This value is know as Exit Status of that command. To determine this exit Status we use ? variable of shell. For eg. rm unknow1file It will show error as follows rm: cannot remove `unkowm1file': No such file or directory and after that if you give command echo ? it will print nonzero value(0) to indicate error. Now give command ls echo ? It will print 0 to indicate command is successful. Try the following commands and not down there exit status expr 1 + 3 echo ? echo Welcome echo ? wildwest canwork? echo ? date echo ? echon ? (8 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial echo ? (6)if-then-fi for decision making is shell script Before making any decision in Shell script you must know following things Type bc at prompt to start Linux calculator program bc After this command bc is started and waiting for you commands, i.e. give it some calculation as follows type 5 + 2 as 5 + 2 7 7 is response of bc i.e. addition of 5 + 2 you can even try 5 - 2 5 / 2 Now what happened if you type 5 2 as follows 5 2 0 0 (Zero) is response of bc, How? Here it compare 5 with 2 as, Is 5 is greater then 2, (If I ask same question to you, your answer will be YES) In Linux (bc) gives this 'YES' answer by showing 0 (Zero) value. It means when ever there is any type of comparison in Linux Shell It gives only two answer one is YES and NO is other. Linux Shell Meaning Example Value  Zero Value (0) Yes/True  0 -1, 32, 55 NON-ZERO No/False anything but not Value ( 0)    zero Try following in bc to clear your Idea and not down bc's response 5 12 5 == 10 5 = 2 5 == 5 12 2 BC's Response (i.e. Linux Shell Expression Meaning to us Your Answer representation in zero & non-zero value) 5 12      Is 5 greater than 12     NO 0 5 == 10     Is 5 is equal to 10        NO 0 5 = 2 Is 5 is NOT equal to 2   YES 1 5 == 5 Is 5 is equal to 5          YES 1 1 2 Is 1 is less than 2 Yes 1 Now will see, if condition which is used for decision making in shell script, If given condition is true then command1 is executed. Syntax:           if   condition           then                    command1 if condition is true or if exit status                    of condition is 0 (zero)                    ...                    ... (9 of 19) 17/08/2001 17.42.21Linux Shell Script Tutorial           fi Here condition is nothing but comparison between two values, for compression we can use test or expr statements or even exist status can be also used. An expression is nothing but combination of values, relational operator (such as ,, etc) and mathematical operators (such as +, -, / etc ). Following are all examples of expression: 5 2 3 + 6 3 65 a b c 5 c 5 + 30 -1 Type following command (assumes you have file called foo) cat foo echo ? The cat command return zero(0) on successful, this can be used in if condition as follows, Write shell script as cat showfile /bin/sh Script to print file if cat 1 then      echo -e "\n\nFile 1, found and successfully echoed" fi Now run it. chmod +x showfile ./showfile foo Here ./showfile   foo Our shell script name is showfile(0) and foo is argument (which is 1).Now we compare as follows if cat 1 (i.e. if cat foo) Now if cat command finds foo file and if its successfully shown on screen, it means our cat command is successful and its exist status is 0 (indicates success) So our if condition is also true and hence statement echo -e "\n\nFile 1, found and successfully echoed" is proceed by shell. Now if cat command is not successful then it returns non-zero value (indicates some sort of failure) and this statement echo -e "\n\nFile 1, found and successfully echoed" is skipped by our shell. Now try to write answer for following 1) Create following script cat trmif Script to test rm command and exist status if rm 1 then      echo "1 file deleted" fi (Press Ctrl + d to save) chmod +x trmif Now answer the following A) There is file called foo, on your disk and you give command, ./trmfi   foo what will be output. (10 of 19) 17/08/2001 17.42.21

Advise: Why You Wasting Money in Costly SEO Tools, Use World's Best Free SEO Tool Ubersuggest.