Reputation: 333
Example of script usage
./foo.sh -v -r /home/ -s /home/user/file
./foo.sh -r /home/ -s /home/user/file
In parameter I always need a file or a folder to scan and a file for the database (-s database file)
inside foo.sh
function entrance()
{
while getopts "v:r:s" opt; do
case $opt in
v)
echo "-v was triggered, Verbose mode" >&2
;;
r)
echo "-r was triggered, recursive mode: $OPTARG" >&2
;;
s)
echo "-s was triggered, DATABASE: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
}
I don't know why it doesn't work.
Please fix me.
Thanks
Upvotes: 2
Views: 750
Reputation: 11561
You probably forgot about $@ while calling the function. See this:
#!/bin/bash
function entrance() {
while getopts "v:r:s" opt; do
case $opt in
v)
echo "-v was triggered, Verbose mode" >&2
;;
r)
echo "-r was triggered, recursive mode: $OPTARG" >&2
;;
s)
echo "-s was triggered, DATABASE: $OPTARG" >&2
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
:)
echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
}
entrance "$@"
And some explanation: Using getopts within user-defined-function in bourne shell
Upvotes: 2