Copy the function to the beginning of your script or simply just download it and source the file:
source run_sections_fn.sh
Call the function at the beginning of your script with:fn_run_sections
but after you load fn_main_args $@
Example:
#!/bin/bash
source main_args_fn.sh
source run_sections_fn.sh
# Load script's arguments into vars
fn_main_args $@
# Parse entire script for sections
fn_run_sections
#:start:section1:
echo "Here is section 1"
#:end:section1:
#:start:section2:
echo "Here is section 2"
#:end:section2:
Run your script with argument section and specify what section would you like to run
./script --section section1
Output: Here is section1
Example:
#!/bin/bash
source main_args_fn.sh
source run_sections_fn.sh
# Load script's arguments into vars
fn_main_args $@
# Parse entire script for sections
fn_run_sections
#:start:section1:
echo "Here is section 1"
#:end:section1:
#:start:section2:
echo "Here is section 2"
#:end:section2:
#:start:section3:
echo "Here is section 3"
#:end:section3:
Run your script with argument section and specify what section would you like to run
./script --section section1 section3
Output:
Here is section1
Here is section3
Description:
If you just want to run the script as it is, with all line from start to end of the script, just call the script with --section all
and all your section markers will be ignored ( section marker - "#:start:section_name:"
, "#:end:section_name:"
)
Run your script with argument section and specify "all" instead of a section name
./script --section all
Description:
If you have section that you need to run no matter what, like the first part of your script where you hold the Variables and Constants used in all sections, then mark this as an INIT section with #:start:INIT:
and finish the sections with #:end:INIT:
;
You can mark as many times as you need the INIT section, and the code from this section will run before your any other sections, even if the INIT section is at the end of your script!
Example:
#!/bin/bash
source main_args_fn.sh
source run_sections_fn.sh
# Load script's arguments into vars
fn_main_args $@
# Parse entire script for sections
fn_run_sections
#:start:INIT:
echo "Here is first INIT section!"
#:end:INIT:
#:start:section1:
echo "Here is section 1"
#:end:section1:
#:start:section2:
echo "Here is section 2"
#:end:section2:
#:start:INIT:
echo "Here is second INIT section!"
#:end:INIT:
#:start:section3:
echo "Here is section 3"
#:end:section3:
Run your script with argument section and specify what section would you like to run
./script --section section1 section3
Output:
Here is first INIT section!
Here is second INIT section!
Here is section1
Here is section3
Be careful that if you run --section all
then the output will be:
Output:
Here is first INIT section!
Here is section1
Here is section2
Here is second INIT section!
Here is section3
This because the function will ignore any section marks and will run the script from the begging to end
You can call the script with no argument and at the of the output provided with "USAGE" stuff you will see all sections that are found in your script
Use this function in conjunction with fn_main_args
which will add the functionality to parse your script arguments.
You can download from here main_args_fn.sh ; Call the function with fn_main_args $@
Copy the function to the beginning of your script or simply just download it and source the file:
source main_args_fn.sh
Call the function at the beginning of your script with:fn_main_args $@
When you'll run the script with arguments like ./script_name.sh --argument1 value_of_argument1 --argument2 value2
the function will simply set a var named "argument1" and the value for var will be "value_of_argument1"
basic it will do argument1="value_of_argument1"
and you can use the var in your script.
If you want more values to be set for the same argument:
./script_name.sh --argument1 value1 value2 --argument2 value3
then you'll have:
- argument1="value1 value2"
- argument2="value3"
You can use this function in conjunction with fn_run_sections
which will add the functionality for you to run sections from you script