~/Blog

Brandon Rozek

Photo of Brandon Rozek

PhD Student @ RPI studying Automated Reasoning in AI and Linux Enthusiast.

Parsing CLI Flags 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.

I was creating a bash script and was looking around for a solution for parsing command line arguments. This StackOverflow post has a variety of different solutions available. I want to describe my favorite of these posts.

Inanc Gumus proposed the following:

#!/bin/bash

while [[ "$#" -gt 0 ]]; do case $1 in
  -d|--deploy) deploy="$2"; shift;;
  -u|--uglify) uglify=1;;
  *) echo "Unknown parameter passed: $1"; exit 1;;
esac; shift; done

echo "Should deploy? $deploy"
echo "Should uglify? $uglify"

Let me quickly describe what it does. While the number of arguments left to process is greater than zero….

  • Check to see if the argument matches any of the flags
    • If it does…
      • If the flag requires an additional argument grab it. Then discard an argument.
    • If it doesn’t. Error out.
    • Then get rid of an argument.

At the end of the while loop, you would’ve evaluated all the arguments!

Reply via Email Buy me a Coffee
Was this useful? Feel free to share: Hacker News Reddit Twitter

Published a response to this? :