Skip to content

Instantly share code, notes, and snippets.

@jrichardsz
Last active April 14, 2024 21:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save jrichardsz/c0047f58cb6765c7b6a7fb33c466ab3f to your computer and use it in GitHub Desktop.
Save jrichardsz/c0047f58cb6765c7b6a7fb33c466ab3f to your computer and use it in GitHub Desktop.
bash argument parser, bashargument

foo.sh

#!/bin/bash

for ARGUMENT in "$@"
do
   KEY=$(echo $ARGUMENT | cut -f1 -d=)

   KEY_LENGTH=${#KEY}
   VALUE="${ARGUMENT:$KEY_LENGTH+1}"

   export "$KEY"="$VALUE"
done

usage

foo.sh STEPS=abc REPOSITORY_NAME=acme

args_shell_parser.sh

for ARGUMENT in "$@"
do

    KEY=$(echo $ARGUMENT | cut -f1 -d=)
    VALUE=$(echo $ARGUMENT | cut -f2 -d=)   

    case "$KEY" in
            STEPS)              STEPS=${VALUE} ;;
            REPOSITORY_NAME)    REPOSITORY_NAME=${VALUE} ;;     
            *)   
    esac    


done

echo "STEPS = $STEPS"
echo "REPOSITORY_NAME = $REPOSITORY_NAME"

usage

bash script.sh  STEPS="ABC" REPOSITORY_NAME="stackexchange"

BohdanShulha-suggestion.md

script

for ARGUMENT in "$@"
do
    KEY=$(echo $ARGUMENT | cut -f1 -d=)
 
    KEY_LENGTH=${#KEY}
    VALUE="${ARGUMENT:$KEY_LENGTH+1}"
    export "$KEY"=$VALUE
done

echo "STEPS = $STEPS"
echo "REPOSITORY_NAME = $REPOSITORY_NAME"
echo "EXTRA_VALUES" = $EXTRA_VALUES"

error log:

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment