Lecture Exercise 2

Deliverables

The deliverables for this exercise are two files: LE2A.sh and LE2B.sh. They should both be in the lectures/L2/ directory. You may push directly to master. There is no need to push auxiliary files.

Part A

Write a bash script that checks all the files in the directory and prints out the filename if it is executable by you (the user). Save this file as LE2A.sh.

Note: For testing purposes, you should create an executable script in your directory to make sure your script picks up on it.

Note: To test if a file is executable by other groups or the world, the find command may be a better option (either in a bash script or directly from the command line). Testing this case is not required for this exercise.

Hints

You should make use of the command substitution feature of the bash shell. Before coding this up in your bash script, try this command from the command line: echo "$(ls)". What happens?

Concepts Covered

  • Command substitution
  • For loops
  • Conditionals
  • File tests

Part B

Write a bash script to "automate" your (responsible) git workflow. Call it LE2B.sh. The script should do the following:

  1. Prompt the user for a file to commit (hint: use read -r -p
  2. Stage the file (remember, this is just git add)
  3. Display the results of git status.
  4. Ask the user if they wish to continue (Y or N). If they respond N then exit (hint, you can use exit 1).
  5. If they say Y then prompt the user for a commit message.
  6. Commit the file to the local repo with the specified message (git commit -m ).
  7. Display the results of git status.
  8. Ask the user if they wish to continue (Y or N). If they respond N, then exit.
  9. If they say Y then do a git push.

Note: This script is very limited, but a nice illustration of a simple git workflow. Feel free to expand it (e.g. use while loops, etc). However, please continue to use git best practices. For example, do not use git add .!

Hints:

  • Make sure you work in your lectures/L2/ subdirectory of your course repo.
  • You might want to create a dummy file to commit (e.g. touch dummy will create an empty file).

Concepts Covered

  • Reading input from the user
  • Conditional statements
  • String comparisons