~/Blog

Brandon Rozek

Photo of Brandon Rozek

PhD Student @ RPI, Writer of Tidbits, and Linux Enthusiast

Partial Argument Parse and Passing in Bash

Published on

Updated on

Warning: This post has not been modified for over 2 years. For technical posts, make sure that it is still relevant.

Let’s say we want to augment an existing terminal command (like for example wget). We then want to be able to add or edit command line options. The rest of this post provides an example that hopefully you can use in your bash script.

#!/bin/bash

# Custom help function
show_help() {
  echo "Usage: custom_command [arguments]"
  echo "    --name <name>"
  echo "    --flag_example"
  echo "    <additional arguments to be passed along>"
  exit 0
}

# Defaults for our custom flags or parameters.
name=""
flag_example=0

# Loop through and take out our custom parameters
# from the parameter list.
i=0
numargs=$#
while test $i -lt "$numargs"
do
  case "$1" in
    "--help")
      show_help
      ;;
    "--name")
      shift
      name=$1
      ;;
    "--flag_example")
      flag_example=1
      ;;
    *)
      set -- "$@" "$1"
      ;;
  esac
  shift
  i=$((i+1))
done

# Do something here using our custom parameters

# Pass our non-custom parameters to the application
wget "$@"

Have any questions or want to chat: Reply via Email

Enjoyed this post?

Published a response to this? :