1 / 71

UNIX Shell-Scripting Basics

UNIX Shell-Scripting Basics. Agenda. What is a shell? A shell script? Introduction to bash Running Commands Applied Shell Programming. What is a shell?. ▌. %. What is a shell?. /bin/bash. What is a shell?. #!/bin/bash. INPUT. shell. OUTPUT. ERROR. What is a shell?.

nola
Download Presentation

UNIX Shell-Scripting Basics

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. UNIX Shell-Scripting Basics www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  2. Agenda • What is a shell? A shell script? • Introduction to bash • Running Commands • Applied Shell Programming www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  3. What is a shell? ▌ % www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  4. What is a shell? /bin/bash www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  5. What is a shell? #!/bin/bash www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  6. INPUT shell OUTPUT ERROR What is a shell? www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  7. What is a shell? • Any Program • But there are a few popular shells… www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  8. Bourne Shells • /bin/sh • /bin/bash“Bourne-Again Shell” Steve Bourne www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  9. Other Common Shells • C Shell (/bin/csh) • Turbo C Shell (/bin/tcsh) • Korn Shell (/bin/ksh) www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  10. An aside: What do I mean by /bin ? • C Shell (/bin/csh) • Turbo C Shell (/bin/tcsh) • Korn Shell (/bin/ksh) www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  11. An aside: What do I mean by /bin ? • /bin, /usr/bin, /usr/local/bin • /sbin, /usr/sbin, /usr/local/sbin • /tmp • /dev • /home/borwicjh www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  12. What is a Shell Script? • A Text File • With Instructions • Executable www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  13. What is a Shell Script? % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  14. What is a Shell Script? A Text File % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  15. INPUT OUTPUT ERROR env An aside: Redirection • cat > /tmp/myfile • cat >> /tmp/myfile • cat 2> /tmp/myerr • cat < /tmp/myinput • cat <<INPUTSome inputINPUT • cat > /tmp/x 2>&1 0 1 2 www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  16. What is a Shell Script? How To Run % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  17. What is a Shell Script? What To Do % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  18. What is a Shell Script? Executable % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  19. What is a Shell Script? Running it % cat > hello.sh <<MY_PROGRAM #!/bin/sh echo ‘Hello, world’ MY_PROGRAM % chmod +x hello.sh % ./hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  20. Finding the program: PATH • % ./hello.sh • echo vs. /usr/bin/echo • % echo $PATH/bin:/usr/bin:/usr/local/bin:/home/borwicjh/bin • % which echo/usr/bin/echo www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  21. Variables and the Environment % hello.sh bash: hello.sh: Command not found % PATH=“$PATH:.” % hello.sh Hello, world www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  22. An aside: Quoting % echo ‘$USER’ $USER % echo “$USER” borwicjh % echo “\”” ” % echo “deacnet\\sct” deacnet\sct % echo ‘\”’ \” www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  23. Variables and the Environment % env […variables passed to sub-programs…] % NEW_VAR=“Yes” % echo $NEW_VAR Yes % env […PATH but not NEW_VAR…] % export NEW_VAR % env […PATH and NEW_VAR…] www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  24. Welcome to Shell Scripting! Input, Output, and Error Shebang! The Environment PATH chmod www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  25. How to Learn • man • man bash • man cat • man man • man –k • man –k manual • Learning the Bash Shell, 2nd Ed. • “Bash Reference” Cards • http://www.tldp.org/LDP/abs/html/ www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  26. Introduction to bash www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  27. Continuing Lines: \ % echo This \ Is \ A \ Very \ Long \ Command Line This Is A Very Long Command Line % www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  28. Exit Status • $? • 0 is True % ls /does/not/exist % echo $? 1 % echo $? 0 www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  29. Exit Status: exit % cat > test.sh <<_TEST_ exit 3 _TEST_ % chmod +x test.sh % ./test.sh % echo $? 3 www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  30. Logic: test % test 1 -lt 10 % echo $? 0 % test 1 == 10 % echo $? 1 www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  31. Logic: test • test • [ ] • [ 1 –lt 10 ] • [[ ]] • [[ “this string” =~ “this” ]] • (( )) • (( 1 < 10 )) www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  32. Logic: test • [ -f /etc/passwd ] • [ ! –f /etc/passwd ] • [ -f /etc/passwd –a –f /etc/shadow ] • [ -f /etc/passwd –o –f /etc/shadow ] www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  33. An aside: $(( )) for Math % echo $(( 1 + 2 )) 3 % echo $(( 2 * 3 )) 6 % echo $(( 1 / 3 )) 0 www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  34. Logic: if if something then : # “elif” a contraction of “else if”: elif something-else then : else then : fi www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  35. Logic: if if [ $USER –eq “borwicjh” ] then : # “elif” a contraction of “else if”: elif ls /etc/oratab then : else then : fi www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  36. Logic: if # see if a file exists if [ -e /etc/passwd ] then echo “/etc/passwd exists” else echo “/etc/passwd not found!” fi www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  37. Logic: for for i in 1 2 3 do echo $i done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  38. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  39. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  40. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  41. Logic: C-style for for (( expr1 ; expr2 ; expr3 )) do list done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  42. Logic: C-style for LIMIT=10 for (( a=1 ; a<=LIMIT ; a++ )) do echo –n “$a ” done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  43. Logic: while while something do : done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  44. Logic: while a=0; LIMIT=10 while [ "$a" -lt "$LIMIT" ] do echo -n "$a ” a=$(( a + 1 )) done www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  45. Counters COUNTER=0 while [ -e “$FILE.COUNTER” ] do COUNTER=$(( COUNTER + 1)) done • Note: race condition www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  46. Reusing Code: “Sourcing” % cat > /path/to/my/passwords <<_PW_ FTP_USER=“sct” _PW_ % echo $FTP_USER % . /path/to/my/passwords % echo $FTP_USER sct % www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  47. Variable Manipulation % FILEPATH=/path/to/my/output.lis % echo $FILEPATH /path/to/my/output.lis % echo ${FILEPATH%.lis} /path/to/my/output % echo ${FILEPATH#*/} path/to/my/output.lis % echo ${FILEPATH##*/} output.lis www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  48. It takes a long time to become a bash guru… www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  49. Running Programs www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

  50. Reasons for Running Programs • Check Return Code • $? • Get Job Output • OUTPUT=`echo “Hello”` • OUTPUT=$(echo “Hello”) • Send Output Somewhere • Redirection: <, > • Pipes www.wfu.edu/~borwicjh/presentations/UNIX%20Shell-Scripting%20Basics.ppt

More Related