You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.8 KiB
104 lines
2.8 KiB
1 year ago
|
#!/bin/bash
|
||
|
|
||
|
# Spell cast successfully!
|
||
|
|
||
|
# This spell will teach you about best practices for making UNIX scripts and command line utilities usable
|
||
|
|
||
|
# One important aspect of script usability is providing clear and concise usage instructions.
|
||
|
# You can do this by adding a usage function or a help flag, such as `-h` or `--help`.
|
||
|
|
||
|
usage() {
|
||
|
echo "Usage: $0 [-h] [-v] [-f file] arg1 arg2"
|
||
|
}
|
||
|
|
||
|
while getopts "hvf:" opt; do
|
||
|
case ${opt} in
|
||
|
h )
|
||
|
usage
|
||
|
exit 0
|
||
|
;;
|
||
|
v )
|
||
|
echo "Verbose mode on"
|
||
|
;;
|
||
|
f )
|
||
|
file="$OPTARG"
|
||
|
;;
|
||
|
\? )
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
shift $((OPTIND -1))
|
||
|
|
||
|
# Another aspect of usability is providing clear and informative error messages.
|
||
|
# This can help users quickly understand what went wrong and how to fix it.
|
||
|
|
||
|
if [[ -z $1 ]]; then
|
||
|
echo "Error: missing required argument arg1"
|
||
|
usage
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [[ ! -f $file ]]; then
|
||
|
echo "Error: $file is not a valid file"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# You can also improve usability by providing a consistent interface and adhering to conventions.
|
||
|
# For example, using long options with a double dash, like `--help` is more user-friendly than using short options with a single dash like `-h`.
|
||
|
|
||
|
echo "arg1: $1"
|
||
|
echo "arg2: $2"
|
||
|
echo "file: $file"
|
||
|
|
||
|
# Additionally, providing tab-completion options for your script can greatly enhance usability.
|
||
|
|
||
|
# Lastly, testing your script with different inputs and edge cases can help ensure it is robust and usable for a wide range of users.
|
||
|
|
||
|
# Spell cast successfully!
|
||
|
|
||
|
#!/bin/bash
|
||
|
# The Very Usable, the most usable script
|
||
|
# By studying this spell, your scripts shall be top-notch and fleet
|
||
|
# With usage and help options, your users shall never be lost
|
||
|
# And clear error messages, at any cost
|
||
|
|
||
|
# First, let's add usage and help flags
|
||
|
while getopts ":h" opt; do
|
||
|
case $opt in
|
||
|
h)
|
||
|
echo "Usage: $(basename $0) [-h] [arguments]"
|
||
|
echo "This is a highly usable script that demonstrates best practices for making unix scripts and command line utilities usable."
|
||
|
exit 0
|
||
|
;;
|
||
|
\?)
|
||
|
echo "Invalid option: -$OPTARG" >&2
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
# Now let's add some actions for the script
|
||
|
if [ $# -eq 0 ]; then
|
||
|
echo "No arguments provided. Use -h flag for help." >&2
|
||
|
exit 1
|
||
|
else
|
||
|
echo "Performing actions with provided arguments: $@"
|
||
|
fi
|
||
|
|
||
|
# Let's make sure our script exits with appropriate status codes
|
||
|
exit_status=0
|
||
|
|
||
|
# And let's add some error handling
|
||
|
error_message="Error: unknown error"
|
||
|
trap 'echo $error_message; exit $exit_status' ERR
|
||
|
|
||
|
# Now, let's add some actions that may fail
|
||
|
false # this command always exits with status 1
|
||
|
|
||
|
# Let's update our error message and exit status before exiting
|
||
|
error_message="Error: false command failed"
|
||
|
exit_status=1
|
||
|
|
||
|
# The Very Usable spell has been cast successfully
|