1 unix/linux commands and shell programming-part 2 (dr. mohamed el bachir menai)
TRANSCRIPT
![Page 1: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/1.jpg)
1
Unix/Linux commands and shell programming-Part 2(Dr. Mohamed El Bachir Menai)
![Page 2: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/2.jpg)
2
Shell logic structures
The basic logic structures needed for program development are: Sequential structure Decision structures Looping structures
![Page 3: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/3.jpg)
3
Sequential structure
Sequential structure states that commands will be executed in the order in which they appear in the program
The only break in this sequence comes when a branch instruction changes the flow of execution
![Page 4: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/4.jpg)
4
Decision structures
The if statement is the primary decision-making control structure
if (expression) simple-commandorif (expression) then ...[else ...]endif
![Page 5: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/5.jpg)
5
Decision structures, cont
bashif test1; then
commands1;
[elif test2; then
commands2;]
[else commands3;]
fi
![Page 6: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/6.jpg)
6
Decision structures, cont. Example
#!/bin/cshif ($#argv != 2) then echo $0 needs two parameters! echo You are inputting $#argv parameters.else set par1 = $argv[1] set par2 = $argv[2]endif
The set built-in command can be used to display all variables set in the shell
![Page 7: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/7.jpg)
7
Decision structures, cont. Another example:
#! /bin/csh# number is positive, zero or negativeecho "enter a number:"set number = $<if ( $number < 0 ) then echo "negative"else if ( $number == 0 ) then echo " zero "else echo " positive "endif
![Page 8: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/8.jpg)
8
Decision structures, cont.
The switch logic structure simplifies the selection of a match when you have a list of choices
It allows your program to perform one of many actions, depending upon the value of a variable
![Page 9: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/9.jpg)
9
Decision structures, cont.
switch ( var )case string1:
command_set_1breaksw
case string2:command_set_2breaksw
defaultcommand_set_3
endsw
![Page 10: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/10.jpg)
10
Decision structures, cont.#!/bin/cshif ($#argv == 0 ) then echo "No arguments supplied...exiting"else switch ($argv[1]) case [yY]: echo " Argument one is yes. " breaksw case [nN]: echo " Argument one is no. " breaksw default: echo " Argument one is neither yes nor no. " breaksw endswendif
![Page 11: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/11.jpg)
11
Decision structures, cont.
bashcase word in
pattern {|pattern}*) commands;;
…
esac
![Page 12: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/12.jpg)
12
Decision structures, cont.
Example case $reply in “1”)
date;; “2”|”3”)
pwd;;*)
echo illegal choice;;
esac
![Page 13: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/13.jpg)
13
Looping structures
while ( expr )command_set
end
foreach var ( worddlist )command_set
end
![Page 14: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/14.jpg)
14
Looping structures, cont. bash
for name in word {word}* do commands done
while test do commands done until test do commands done
![Page 15: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/15.jpg)
15
Looping structures, cont.
Example:#!/bin/cshforeach person (Omar Khaled Ali Faycal)
echo Hello $personend
Output:Hello OmarHello KhaledHello AliHello Faycal
![Page 16: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/16.jpg)
16
Looping structures, cont.
Other example: Adding integers from 1 to 10
#!/bin/cshset i=1set sum=0while ($i <= 10)
echo Adding $i into the sum. set sum=`expr $sum + $i` set i=`expr $i + 1`
endecho The sum is $sum.
![Page 17: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/17.jpg)
17
Examples1. #! /bin/csh -fset num_args = ${#argv}echo "The number of arguments in argv is: $num_args”
set n = 0while ( $n <= $num_args ) echo "Argument $n is $argv[$n]" set n = ($n + 1)end
2.if (-f ln.exe && -f raz.exe) echo "yes"if (-f ln.exe || -f raz.exe) echo "no"
![Page 18: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/18.jpg)
18
Examples, cont.
3.
#!/bin/sh
# make a directory
mkdir /home/omar/mydocs
# copy all doc files
cp *.docs /home/omar/mydocs
# delete all docs files
rm *.docs
![Page 19: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/19.jpg)
19
Examples, cont.
4.#!/bin/shif grep ‘omar\>’ data.file > /dev/null 2>&1then
echo “omar is in file”else
echo “No, omar is not in file”fi/dev/null: the system dustbin
![Page 20: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/20.jpg)
20
Special shell variables$#: the number of arguments passed to the script
$*: shows in a single string all the arguments passed to the script
$$: the current PID of the script running
$!: the PID of the last process that was put in the background
$@: the same as $#, but when used with quotes, returns each argument in quotes
$?: shows the exit status of the last command. 0 is no errors, any other value is an error.
![Page 21: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/21.jpg)
21
Special shell variables, cont.echo “this is the script name : $0”
echo “this is the first parameter : $1”
echo “this is the second parameter : $2”
echo “this is the third parameter : $3”
echo “this is the fourth parameter : $4”
echo “the number of arguments passed : $#”
echo “show all arguments : $*”
echo “show me my process ID : $$”
echo “show me the arguments in quotes : $@”
echo “did my script go with any errors : $?”
![Page 22: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/22.jpg)
22
Examples, cont.5. #!/bin/sh#is the EDITOR set?if [-z $EDITOR]; then
echo “Your editor environment is not set”echo “I will assume you want to use vi … OK”echo –n “Do you wish to change it now? [y..n]:”read ANS# check for an upper or lower case ‘y’if [“$ANS”=“y”] || [“$ANS”=“Y”]; then
echo “enter your editor type:”read EDITORif [-z $EDITOR] || [“$EDITOR”=“”]; then
echo “No, edito entered, using vi as default” EDITOR=vi
export EDITORfi# got a value use it for EDITOREDITOR=$EDITORexport EDITORecho “setting $EDITOR”
fi else#user
echo “Using vi as the default editor”EDITOR=viexport EDITOR
fi
![Page 23: 1 Unix/Linux commands and shell programming-Part 2 (Dr. Mohamed El Bachir Menai)](https://reader036.vdocuments.us/reader036/viewer/2022081501/5697bfef1a28abf838cba1a2/html5/thumbnails/23.jpg)
23
Examples, cont.6.#!/bin/shBAK=“.bak”for loop in ‘ls ‘do
echo “copying $loop to $loop$BAK”cp $loop $loop$BAK
Done
7.#!/bin/shfor files in ‘ls LPSO*’do
cat $files | tr “[a-z]” “[A-Z]” >$files.UCdone