Scripting Languages and CShell - PowerPoint PPT Presentation

About This Presentation
Title:

Scripting Languages and CShell

Description:

Script is a sequence of commands written as plain text and run ... Today some scripting languages have evolved into lightweight ... Shell scripts. Perl ... – PowerPoint PPT presentation

Number of Views:42
Avg rating:3.0/5.0
Slides: 27
Provided by: yossir
Category:

less

Transcript and Presenter's Notes

Title: Scripting Languages and CShell


1
Scripting Languages and C-Shell
2
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

3
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

4
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

5
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

6
Redirection and pipes
  • prog redirection file
  • gt redirect stdout
  • gtgt append stdout
  • gt redirect stdout and stderr
  • gtgt append stdout and stderr
  • lt redirect stdin
  • prog1 pipe prog2
  • redirect stdout of prog1 to stdin of
    prog2
  • same, with stdout and stderr

7
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

8
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

9
  • !/bin/csh f
  • hello worlds
  • echo Hello world

10
C-Shell Syntax
11
Defining/changing shell variables
  • Variables local to current shell
  • String set var1strval1varNstrvalN
  • Numeric _at_ var1numval1varNnumvalN
  • Global variables
  • setenv var strval set and export
  • var or var access value of var
  • Examples
  • set name Alon string var.
  • set name lt input from user
  • _at_ a 0 numeric var.
  • set dir pwd command substitution

12
Array variables
  • Available for integers and strings
  • Indexed starting from 1!!!
  • Declaration set name (array elements)
  • name number of elements in array
  • namei access the ith element
  • namei-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 size6

13
Passing arguments to scripts
  • argv1argv9 are assigned the command line
    arguments
  • argv or - total number of arguments
  • argv or - values of all arguments
  • argv0 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).

14
  • !/bin/csh f
  • simple_example
  • string variable
  • set course soft1
  • echo course
  • array
  • set names ( Danny Dina Eyal Ayelet Ori Neta )
  • echo names
  • echo names size of array
  • echo names2 the second element
  • echo names2- starting from the second
    element
  • echo names-2 until the second element

15
  • numeric variables and expression evaluation
  • _at_ num 17
  • echo num
  • _at_ num - 3
  • echo num
  • _at_ num 14
  • echo 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 2
  • echo The number of parameters \(not including
    program name\) is argv

16
Loops
  • foreach identifier (set)
  • . . .
  • end
  • while (expression)
  • . . .
  • end
  • Expression can include the usual C operators.
  • break, continue as in C.

17
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

18
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

19
  • !/bin/csh f
  • sum
  • if (argv 0) then
  • echo Usage 0 num1 num2 num3 ...
  • exit 1
  • endif
  • _at_ sum 0
  • foreach number (argv)
  • _at_ sum number
  • end
  • echo The sum is sum
  • _at_ average sum / argv

20
  • !/bin/csh -f
  • sort_files
  • if (argv 0) then
  • echo USAGE 0 file_names_to_sort
  • echo This command writes on the original files
    \!\!\!
  • exit 1
  • endif
  • foreach file(argv)
  • sort file gt file.tmp
  • mv file.tmp file
  • end

21
  • !/bin/csh -f
  • Biggest_file
  • INPUT Directory name
  • OUTPUT The file with the biggest number of
    characters in the given directory
  • if (argv 0) then
  • echo USAGE 0 directory_name
  • exit 1
  • endif
  • if (-d 1) then
  • _at_ max 0
  • foreach file(1/)
  • if (-r file -f file) then
  • set wc_out wc -c file
  • if (wc_out1 gt max) then
  • set biggest_file wc_out2
  • _at_ max wc_out1

22
  • !/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 lt
  • while (num ! 0)
  • _at_ modulo num 3
  • switch (modulo)
  • case 0
  • echo 0
  • breaksw
  • case 1
  • echo 1
  • breaksw

23
Retrieving returned values
  • Returned values (by return, exit) are stored in
    status environment variable
  • The script
  • !/bin/csh -f
  • ./prog
  • if (status ! 0) then
  • echo "Error occured!"
  • endif
  • runs prog (from current dir) and reports
  • whether an error occurred.

24
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/

25
  • !/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_num
  • total 3
  • if (3 gt 80)
  • total_high 3
  • high_stud_num
  • END print "Number of students ", stud_num
  • print "Avergae grade is ", total /
    stud_num

26
  • 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
Write a Comment
User Comments (0)
About PowerShow.com