scripting languages and c-shell. what is a scripting language ? script is a sequence of commands...

26
Scripting Languages and C- Shell

Post on 22-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Scripting Languages and C-Shell

Page 2: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

What is a scripting language ?

• Script is a sequence of commands written as plain text and run by an interpreter (shell).

• Today – some scripting languages have evolved into lightweight programming languages.

• Used for lightweight operations such as manipulation of files and prototyping.

• Examples:

– Shell scripts– Perl – Javascript

Page 3: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

C-Shell

• Unix systems come with a variety of shells, e.g. Bourne (sh), Bash (bash), C (csh), TC (tcsh).

• Find your shell: echo $SHELL• C shell startup files: .login, .cshrc• Has C-like syntax

Page 4: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Some Shell Metacharacters

• # - commnet• “ – quote multiple characters but allow substitution• $ - dereference a shell variable• & - execute in background• ‘ – quote multiple characters• * - match zero or more characters• ? – match a single character• [] – insert wild cards: [0-3,5]• ; - separate commands• ! – refer to event in the history list: !!,!4• ` - substitute a command• % - refer to a job: %3

Page 5: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Some useful c-shell commands• head / tail – returns first / last lines of a file• echo – print command• sort – used to sort strings in lexicographical order• cat – concatenate files and print • grep – find regular expressions in files• find – find files by criteria• wc – word count on files• diff - find differences between files• basename / dirname – extract file / directory name

from full path• touch – change file timestamp• mail – sending mail • cp/mv – copy/move files

Page 6: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Redirection and pipes prog redirection file

• > : redirect stdout• >> : append stdout• >& : redirect stdout and stderr• >>& : append stdout and stderr• < : redirect stdin

prog1 pipe prog2

• | : redirect stdout of prog1 to stdin of prog2• |& : same, with stdout and stderr

Page 7: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Some environment variables

• home – name of home directory• path – search path• prompt – shell prompt• cwd – current working directory• term – type of terminal• history – length of history recorded

Page 8: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

How to write a c-shell script

• Edit the code file (no mandatory extension)

• Make sure the first line in the file is:#!/bin/csh –f

• Add executable permission:chmod +x filename

Page 9: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh –f

#################hello worlds #################

echo Hello world

Page 10: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

C-Shell Syntax

Page 11: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Defining/changing shell variables

• Variables local to current shell:– String: set var1[=strval1]…varN[=strvalN]– Numeric: @ var1[=numval1]…varN[=numvalN]

• Global variables:– setenv var [strval] – set and export

• $var or ${var} – access value of var

Examples:• set name = Alon #string var.• set name = $< #input from user• @ a = 0 #numeric var.• set dir = `pwd` #command substitution

Page 12: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Array variables

• Available for integers and strings• Indexed starting from 1!!!• Declaration: set name = (array elements)• $#name – number of elements in array• $name[i] – access the ith element• $name[i-j] – elements i to j.

Examples:• set students = (David Ron Idit)• set fib = (0 1 1 2 3)• set fib = ($fib 5) #append• set size = $#fib #size==6

Page 13: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Passing arguments to scripts

• $argv[1]…$argv[9] are assigned the command line arguments

• $#argv or $# - total number of arguments• $argv[*] or $* - values of all arguments• $argv[0] or $0 – name of script• shift [variable_name] – in case there are

more than 9 arguments – shifts words one position to the left in variable (argv is the default).

Page 14: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh –f

#################simple_example #################

# string variable set course = soft1echo $course

# array

set names = ( Danny Dina Eyal Ayelet Ori Neta )echo $namesecho $#names # size of arrayecho $names[2] # the second elementecho $names[2-] # starting from the second elementecho $names[-2] # until the second elementecho $names[2-3] # elements 2,3

Page 15: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

# numeric variables and expression evaluation

@ num = 17echo $num@ num -= 3echo $num@ num *= 14echo $num

# if we want to assign the value of a command to a variable

set chars = `wc -l ./simple_example`echo $chars

# accessing program parameters

echo The program name is : $0, the first parameter is $1 and the second is $2echo The number of parameters \(not including program name\) is $#argv

Page 16: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Loops

• foreach identifier (set)

. . .

end

• while (expression)

. . .

end• Expression can include the usual C operators.• break, continue – as in C.

Page 17: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Conditional statements

• if (expression) command

• if (expression) then

then-command-list

[else if (expression) then

then-command-list

. . .

else

else-command-list]

endif

• switch (value)case

value1:breaksw. . .default:

endsw

Page 18: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Testing files attributes

• if (-op file_name) then…

-r : read access-w : write access-x : execute access

-e : existence -o : ownership

-f : plain (non-dir.) file-d : directory -l : link

Page 19: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh –f

######### sum #########

if ($#argv == 0) thenecho Usage: $0 num1 [num2 num3 ...]exit 1

endif

@ sum = 0foreach number ($argv)

@ sum += $numberend

echo The sum is : $sum

@ average = $sum / $#argv@ remainder = $sum % $#argvecho The avergae is: $average\($remainder\)

Page 20: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh -f

############# sort_files #############

if ($#argv == 0) thenecho USAGE: $0 file_names_to_sortecho This command writes on the original files \!\!\!exit 1

endif

foreach file($argv)sort $file > $file.tmpmv $file.tmp $file

end

Page 21: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh -f

# Biggest_file# INPUT: Directory name# OUTPUT: The file with the biggest number of characters in the given directory

if ($#argv == 0) thenecho USAGE: $0 directory_nameexit 1

endif

if (-d $1) then@ max = 0foreach file($1/*)

if (-r $file && -f $file) thenset wc_out = `wc -c $file`if ($wc_out[1] > $max) then

set biggest_file = $wc_out[2] @ max = $wc_out[1]

endifelse if (!(-r $file)) then

echo $file unreadable endifendecho The biggest file is $biggest_fileecho The number of characters is $max

elseecho $1 is not a directory

endif

Page 22: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/bin/csh -f

# Modulo3# INPUT: sequence of integer numbers separated by \n terminated by 0# OUTPUT: prints the value of each number modulo 3

set num = $<

while ($num != 0)

@ modulo = $num % 3

switch ($modulo)case 0:

echo 0breaksw

case 1:echo 1breaksw

case 2:echo 2breaksw

default:endsw

set num = $<end

Page 23: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Retrieving returned values• Returned values (by return, exit) are

stored in status environment variable

• The script:

#!/bin/csh -f

./progif ($status != 0) then

echo "Error occured!"endif

runs prog (from current dir) and reports

whether an error occurred.

Page 24: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

awk/gawk

• Useful utility for file manipulation• Processes input line by line. • Example: gawk ‘{print $1}’ input

• For details see :

http://www.gnu.org/software/gawk/manual/

Page 25: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

#!/usr/bin/gawk -f

BEGIN { stud_num = total = high_stud_num = total_high = 0}

{ if (NF != 3) {

print "error in line", FNR, ":", $0 next }++stud_numtotal += $3if ($3 > 80) {

total_high += $3 ++high_stud_num

}}

END { print "Number of students: ", stud_num print "Avergae grade is: ", total / stud_num print "Average of high grades is: ", total_high / high_stud_num}

Page 26: Scripting Languages and C-Shell. What is a scripting language ? Script is a sequence of commands written as plain text and run by an interpreter (shell)

Running with input :

Ron 033453671 91

Yael 034567832 73

Ran 040478124 100

Yoav 060381253 95

Tal 045623141 78 90

Output is :

error in line 5 : Tal 045623141 78 90

Number of students: 4

Avergae grade is: 89.75

Average of high grades is: 95.3333