330 likes | 510 Vues
A Guide to Unix Using Linux Fourth Edition. Chapter 7 Advanced Shell Programming. Objectives. Perform program design and analysis using flowcharts and pseudocode Use techniques to ensure a script is employing the correct shell Set the default shell Configure Bash login and logout scripts
E N D
A Guide to Unix Using Linux Fourth Edition Chapter 7 Advanced Shell Programming
Objectives • Perform program design and analysis using flowcharts and pseudocode • Use techniques to ensure a script is employing the correct shell • Set the default shell • Configure Bash login and logout scripts • Set defaults for the vi editor • Use the test command for programming functions A Guide to Unix Using Linux, Fourth Edition
Objectives (continued) • Format record output • Delete records using a script • Set up a quick screen-clearing technique • Create a program algorithm to solve a cursor-repositioning problem • Develop and test a program to eliminate duplicate records • Create shell functions and use them in a program A Guide to Unix Using Linux, Fourth Edition
Understanding Program Design and Analysis • Design process: • Second step in program development cycle • After creating the specifications for program • Develop computer program by analyzing best way to achieve desired results • Two popular and proven analysis tools: • Flowchart • Pseudocode A Guide to Unix Using Linux, Fourth Edition
Flowcharting • Flowchart • Logic diagram • Uses set of standard symbols • Visually explains sequence of events from start of process to its end point • Documents: • Processes • Procedures • Program sequence A Guide to Unix Using Linux, Fourth Edition
Flowcharting (continued) A Guide to Unix Using Linux, Fourth Edition
Writing Pseudocode • After creating a flowchart, you write pseudocode • Creates a model that you can later use as a basis for a real program Display "What is your favorite vegetable? " on the screen Enter data into veg_name If veg_name is equal to "broccoli" Then Display "Broccoli is a healthy choice." on the screen Else Display "Don’t forget to eat your broccoli also." on the screen End If A Guide to Unix Using Linux, Fourth Edition
Ensuring the Correct Shell Runs the Script • UNIX/Linux users can choose their shell of preference • To ensure that the correct shell is used to interpret your script: • Include command that sets the particular shell to use on the first line of the script • #!/bin/bash A Guide to Unix Using Linux, Fourth Edition
Setting the Default Shell • Shell set up by default is established by system administrator • /etc/passwd file trbrown:x:500:500:Thomas Brown:/home/trbrown:/bin/bash • To edit /etc/passwd file: • Use vi or Emacs • Must be very careful! • Make a backup copy first • Use a GUI • e.g., User Manager tool in GNOME desktop, YaST A Guide to Unix Using Linux, Fourth Edition
Setting the Default Shell (continued) A Guide to Unix Using Linux, Fourth Edition
Using Bash Login and Logout Scripts • In Bash, two scripts run when you log in: • .bash_profile and .bashrc • Edit files with a text editor • Unlike .bash_profile, .bashrc is also run each time you start a subshell • /etc/.bashrc, /etc/bashrc, or /etc/bash.bashrc files set system defaults • Not always available • .bash_logout file (in your home directory) executes commands when user logs out A Guide to Unix Using Linux, Fourth Edition
Using Bash Login and Logout Scripts (continued) A Guide to Unix Using Linux, Fourth Edition
Setting Defaults for Using the vi Editor • .exrc used to automatically set up vi environment • Located in your home directory • Example: set number set tabstop=3 set shell=/bin/bash A Guide to Unix Using Linux, Fourth Edition
Using the test Command A Guide to Unix Using Linux, Fourth Edition
Performing Relational Integer Tests with the test Command • Exit status: numeric value that command returns to OS when it finishes • Interpreting exit status for test command: • 0 (zero) test result is true • 1 test result is false • Use echo $? to view most recent exit status A Guide to Unix Using Linux, Fourth Edition
Performing Relational Integer Tests with the test Command (continued) A Guide to Unix Using Linux, Fourth Edition
Performing String Tests with the test Command • These tests are useful in scripts to test contents of variables • Example: ensure that a variable contains a specific value A Guide to Unix Using Linux, Fourth Edition
Testing Files with the test Command A Guide to Unix Using Linux, Fourth Edition
Performing Boolean Tests with the test Command • Boolean operator: logical operator that symbolizes AND, OR, or NOT to evaluate a relationship • Result of evaluation is either true or false • Examples: • test expression1 -a expression2 • test expression1 -o expression2 • test !expression A Guide to Unix Using Linux, Fourth Edition
Formatting Record Output • To format record output, use translate utility, tr • Two examples: 1) tr [a-z] [A-Z] < counters • Sends contents of counters file as input to tr • Then, converts lowercase characters to uppercase 2) cat names | tr ":" " " • Sends output of cat to tr • Pipes (|) contents of names file to tr • tr replaces each occurrence of “:” with a space A Guide to Unix Using Linux, Fourth Edition
Deleting Phone Records • sed takes contents of input file and applies actions to file’s contents • Actions provided as options and arguments • Results are sent to standard output device • Simple way to delete a phone record: • Use -d option Enter phone number Use sed -d to delete the matching phone number and output to a temporary file, f Confirm acceptance If the output is accepted, copy the temporary file f back to corp_phones (overlaying it) A Guide to Unix Using Linux, Fourth Edition
Clearing the Screen A Guide to Unix Using Linux, Fourth Edition
Creating an Algorithm to Place the Cursor Read information into field2 While field2 equals "-" Move cursor to position of previous field, field1 Clear current information displayed in field1 Read new information into field1 If field1 = "q" Then Exit program End If Move cursor to position of field2 Read information into field2 End While tput cup 5 18; read lname while test "$lname" = "-" do tput cup 4 18; echo " " tput cup 4 18; read phonenum tput cup 5 18; read lname done A Guide to Unix Using Linux, Fourth Edition
Protecting Against Entering Duplicate Data • A program should always check its input to ensure the user has entered acceptable information • Input validation A Guide to Unix Using Linux, Fourth Edition
Using Shell Functions • Shell function: group of commands stored in memory and assigned a name • Shell scripts can use function name to execute the commands • Use shell functions to isolate reusable code sections • Reduce typing and debugging time • Example: datenow() { date } A Guide to Unix Using Linux, Fourth Edition
Defining a Function from the Command Line • You can define functions from the command line: • However, functions are usually stored in script files • Loaded into memory when you log in • Arguments are passed to functions in the same manner as any other shell procedure: [martin@localhost ~]$ datenow() <Enter> > { <Enter> > date <Enter> > } <Enter> [martin@localhost ~]$ [martin@localhost ~]$ datenow "Today’s date and time are:" Today’s date and time are: Mon Feb 9 21:49:45 MST 2009 A Guide to Unix Using Linux, Fourth Edition
Creating Functions Inside Shell Scripts • Example: a shell script called .myfuncs • You may start .myfuncs from your .bash_profile or .bashrc login script, or the command line sort_name() { sort -k 2 -t: corp_phones } sort_job() { sort -k 6 -t: corp_phones } sort_dept() { sort -k 5 -t: corp_phones } A Guide to Unix Using Linux, Fourth Edition
Troubleshooting a Shell Script • Some tips to help you troubleshoot a script: • Ensure script has execute permissions • Be certain first line of script specifies shell to use • Use the sh -n, -v, and -x troubleshooting options • Look for typographic errors • Look for errors in the use of particular characters • ;, ‘, `, ‘’, “”, #, <, > • Check for syntax errors in the use of commands • Look for the use of command options that are not supported in your distribution of UNIX/Linux • Check initial and exit value of looping logic A Guide to Unix Using Linux, Fourth Edition
Summary • Two most popular and proven analysis tools: flowchart and pseudocode • Have the first line in a script file specify the shell • Use test to validate the existence of directories and files as well as to compare numeric and string values • tr changes characters typed at keyboard • sed reads a file as its input and outputs the file’s modified contents • Shell functions can make programmer more efficient A Guide to Unix Using Linux, Fourth Edition
Command Summary A Guide to Unix Using Linux, Fourth Edition
Command Summary (continued) A Guide to Unix Using Linux, Fourth Edition