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?.

edric
Télécharger la présentation

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

  2. Agenda • What is a shell? A shell script? • Introduction to bash • Running Commands • Applied Shell Programming

  3. What is a shell? ▌ %

  4. What is a shell? /bin/bash

  5. What is a shell? #!/bin/bash

  6. INPUT shell OUTPUT ERROR What is a shell?

  7. What is a shell? • Any Program • But there are a few popular shells…

  8. Bourne Shells • /bin/sh • /bin/bash“Bourne-Again Shell” Steve Bourne

  9. Other Common Shells • C Shell (/bin/csh) • Turbo C Shell (/bin/tcsh) • Korn Shell (/bin/ksh)

  10. An aside: What do I mean by /bin ? • C Shell (/bin/csh) • Turbo C Shell (/bin/tcsh) • Korn Shell (/bin/ksh)

  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

  12. What is a Shell Script? • A Text File • With Instructions • Executable

  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

  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

  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

  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

  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

  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

  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

  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

  21. Variables and the Environment % hello.sh bash: hello.sh: Command not found % PATH=“$PATH:.” % hello.sh Hello, world

  22. An aside: Quoting % echo ‘$USER’ $USER % echo “$USER” borwicjh % echo “\”” ” % echo “deacnet\\sct” deacnet\sct % echo ‘\”’ \”

  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…]

  24. Welcome to Shell Scripting! Input, Output, and Error Shebang! The Environment PATH chmod

  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/

  26. Introduction to bash

  27. Continuing Lines: \ % echo This \ Is \ A \ Very \ Long \ Command Line This Is A Very Long Command Line %

  28. Exit Status • $? • 0 is True % ls /does/not/exist % echo $? 1 % echo $? 0

  29. Exit Status: exit % cat > test.sh <<_TEST_ exit 3 _TEST_ % chmod +x test.sh % ./test.sh % echo $? 3

  30. Logic: test % test 1 -lt 10 % echo $? 0 % test 1 == 10 % echo $? 1

  31. Logic: test • test • [ ] • [ 1 –lt 10 ] • [[ ]] • [[ “this string” =~ “this” ]] • (( )) • (( 1 < 10 ))

  32. Logic: test • [ -f /etc/passwd ] • [ ! –f /etc/passwd ] • [ -f /etc/passwd –a –f /etc/shadow ] • [ -f /etc/passwd –o –f /etc/shadow ]

  33. An aside: $(( )) for Math % echo $(( 1 + 2 )) 3 % echo $(( 2 * 3 )) 6 % echo $(( 1 / 3 )) 0

  34. Logic: if if something then : # “elif” a contraction of “else if”: elif something-else then : else then : fi

  35. Logic: if if [ $USER –eq “borwicjh” ] then : # “elif” a contraction of “else if”: elif ls /etc/oratab then : else then : fi

  36. Logic: if # see if a file exists if [ -e /etc/passwd ] then echo “/etc/passwd exists” else echo “/etc/passwd not found!” fi

  37. Logic: for for i in 1 2 3 do echo $i done

  38. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done

  39. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done

  40. Logic: for for i in /* do echo “Listing $i:” ls -l $i read done

  41. Logic: C-style for for (( expr1 ; expr2 ; expr3 )) do list done

  42. Logic: C-style for LIMIT=10 for (( a=1 ; a<=LIMIT ; a++ )) do echo –n “$a ” done

  43. Logic: while while something do : done

  44. Logic: while a=0; LIMIT=10 while [ "$a" -lt "$LIMIT" ] do echo -n "$a ” a=$(( a + 1 )) done

  45. Counters COUNTER=0 while [ -e “$FILE.COUNTER” ] do COUNTER=$(( COUNTER + 1)) done • Note: race condition

  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 %

  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

  48. It takes a long time to become a bash guru…

  49. Running Programs

  50. Reasons for Running Programs • Check Return Code • $? • Get Job Output • OUTPUT=`echo “Hello”` • OUTPUT=$(echo “Hello”) • Send Output Somewhere • Redirection: <, > • Pipes

More Related