/ Published in: Bash

How to combine getopts options with (-) and non-options.
After processing all options, variable OPTIND contains the value of the first non-option (commandline argument that doesn't start with (-)).
Shift command will clean previous commandline options.
After processing all options, variable OPTIND contains the value of the first non-option (commandline argument that doesn't start with (-)).
Shift command will clean previous commandline options.
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#!/bin/bash while getopts "u:p:" opt; do case $opt in u) echo "-u was triggered, Parameter: $OPTARG" dbuser="$OPTARG" ;; p) echo "-p was triggered, Parameter: $OPTARG" dbpass="$OPTARG" ;; \?) echo "Invalid option: -$OPTARG" exit 1 ;; :) echo "Option -$OPTARG requires an argument." exit 1 ;; esac done # Clear all options and reset the command line shift $(( OPTIND -1 )) # First parameter if [ -z "$1" ]; then echo "usage: $0 [-u name] [-p password] file" exit fi
Comments
