enforce bash version >= 5.1.8
We explain why we test for bash version >= 5.1.8, suggest that versions 4.2 thru 5.1.7 might work but are untested, and suggest what macOS users might with to do.
This commit is contained in:
1 parent
4a3f5588ed
commit
0773e2f31e
26 files changed
+1014
-156
No files matched your search
+39
-6
@@ -55,18 +55,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -152,7 +185,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -54,18 +54,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -152,7 +185,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -94,7 +127,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -152,7 +185,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -121,7 +154,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -119,7 +152,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -172,7 +205,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -131,7 +164,7 @@ Exit codes:
|
|||||||
1 some file is not found, not a readable file or is malformed
|
1 some file is not found, not a readable file or is malformed
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
>= 10 internal error
|
>= 10 internal error
|
||||||
|
|||||||
+39
-6
@@ -30,18 +30,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -140,7 +173,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
8 markdown file(s) not a non-empty readable file
|
8 markdown file(s) not a non-empty readable file
|
||||||
|
|||||||
+39
-6
@@ -28,18 +28,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -108,7 +141,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -133,7 +166,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -78,18 +78,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -203,7 +236,7 @@ Exit codes:
|
|||||||
0 all OK
|
0 all OK
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
@@ -32,18 +32,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -109,7 +142,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
@@ -32,18 +32,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expand to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expand to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -109,7 +142,7 @@ Exit codes:
|
|||||||
1 pandoc exited non-zero
|
1 pandoc exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 YYYY/dir is not a entry directory
|
5 YYYY/dir is not a entry directory
|
||||||
6 pandoc tool not found or not executable
|
6 pandoc tool not found or not executable
|
||||||
>= 10 internal error
|
>= 10 internal error
|
||||||
|
|||||||
@@ -33,18 +33,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -109,7 +142,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -33,18 +33,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -118,7 +151,7 @@ Exit codes:
|
|||||||
1 pandoc exited non-zero
|
1 pandoc exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
>= 10 internal error
|
>= 10 internal error
|
||||||
|
|||||||
@@ -35,18 +35,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -138,7 +171,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -29,18 +29,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -129,7 +162,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -41,18 +41,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -104,7 +137,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -30,18 +30,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -104,7 +137,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -35,18 +35,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -109,7 +142,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
>= 10 internal error
|
>= 10 internal error
|
||||||
|
|
||||||
|
|||||||
@@ -35,18 +35,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -108,7 +141,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -35,18 +35,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -108,7 +141,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -100,7 +133,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -103,7 +136,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
+39
-6
@@ -26,18 +26,51 @@
|
|||||||
#
|
#
|
||||||
# Share and enjoy! :-)
|
# Share and enjoy! :-)
|
||||||
|
|
||||||
# firewall - must be bash with a version 4.2 or later
|
# firewall - run only with a bash that is version 5.1.8 or later
|
||||||
#
|
#
|
||||||
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
# The "/usr/bin/env bash" command must result in using a bash that
|
||||||
|
# is version 5.1.8 or later.
|
||||||
#
|
#
|
||||||
if [[ -z ${BASH_VERSINFO[0]} || ${BASH_VERSINFO[0]} -lt 4 || ${BASH_VERSINFO[0]} -eq 4 && ${BASH_VERSINFO[1]} -lt 2 ]]; then
|
# We could relax this version and insist on version 4.2 or later. Versions
|
||||||
echo "$0: ERROR: bash version must be >= 4.2: $BASH_VERSION" 1>&2
|
# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
|
||||||
|
# bash version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# WHY 5.1.8 and not 4.2? This safely is done because macOS homebrew bash we
|
||||||
|
# often use it "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
|
||||||
|
# use often use is "version 5.1.8(1)-release" or later. These versions are what
|
||||||
|
# we initially tested. We recommend you either upgrade bash or install a newer
|
||||||
|
# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a basj
|
||||||
|
# that is version 5.1.8 or later.
|
||||||
|
#
|
||||||
|
# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
|
||||||
|
# bash "version 3.2.57(1)-release". That macOS shipped version of bash
|
||||||
|
# will NOT work. For users of macOS we recommend you install homebrew,
|
||||||
|
# (see https://brew.sh), and then install homebrew bash (/opt/homebrew/bin/bash),
|
||||||
|
# and then arrange your $PATH so that "/opt/homebrew/bin" is ahead of "/bin".
|
||||||
|
#
|
||||||
|
# NOTE: And while macports might work, we noticed a number of subtle differences
|
||||||
|
# with some of their ported tools to suggest you might be better off
|
||||||
|
# with installing homebrew (see https://brew.sh). No disrespect is intended
|
||||||
|
# to the macports team as they do a commendable job. Nevertheless we ran
|
||||||
|
# into enough differences with macports environments to suggest you
|
||||||
|
# might find a better experience with this tool under homebrew instead.
|
||||||
|
#
|
||||||
|
if [[ -z ${BASH_VERSINFO[0]} ||
|
||||||
|
${BASH_VERSINFO[0]} -lt 5 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
|
||||||
|
${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[1]} -lt 8 ]]; then
|
||||||
|
echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
|
||||||
|
echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
|
||||||
|
echo "$0: Notice: For macOS users, install homebrew (see https://brew.sh)," \
|
||||||
|
"then install homebrew bash (usually in /opt/homebrew/bin/bash)," \
|
||||||
|
"and then arrange \$PATH so that /opt/homebrew/bin is ahead of /bin" 1>&2
|
||||||
exit 4
|
exit 4
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# setup bash file matching
|
# setup bash file matching
|
||||||
#
|
#
|
||||||
# Requires bash with a version 4.2 or later
|
# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
|
||||||
|
# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
|
||||||
#
|
#
|
||||||
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
|
||||||
shopt -u failglob # disable error message if no matches are found
|
shopt -u failglob # disable error message if no matches are found
|
||||||
@@ -103,7 +136,7 @@ Exit codes:
|
|||||||
1 some internal tool exited non-zero
|
1 some internal tool exited non-zero
|
||||||
2 -h and help string printed or -V and version string printed
|
2 -h and help string printed or -V and version string printed
|
||||||
3 command line error
|
3 command line error
|
||||||
4 bash version is < 4.2
|
4 bash version is too old
|
||||||
5 some internal tool is not found or not an executable file
|
5 some internal tool is not found or not an executable file
|
||||||
6 problems found with or in the topdir or topdir/YYYY directory
|
6 problems found with or in the topdir or topdir/YYYY directory
|
||||||
7 problems found with or in the entry topdir/YYYY/dir directory
|
7 problems found with or in the entry topdir/YYYY/dir directory
|
||||||
|
|||||||
Reference in new issue
Block a user