Set Flags
- set_flags.bsh
Functions to make settings/clearing bash flags easy
Sometimes a flag needs to be set locally for a piece of code, and should be reset if and only if it wasn’t set before. These functions do remember the original state so that it can be reset with a simple call
Example
set_flag u
# <code here>
reset_flag u
set_flag e
unset_flag E
set_flags xv
# <code here>
reset_flags
See also
set_flag unset_flag reset_flag set_flags unset_flags reset_flags set_optflag unset_optflag reset_optflag set_optflags unset_optflags reset_optflags set_oflag unset_oflag reset_oflag set_oflags unset_oflags reset_oflags
- _save_flag
- Arguments:
$1- Single letter flag to save- Output:
Stores original state in
VSI_COMMON_SET_FLAG_<flag>.
Saves the previous state of a flag
Note
The original state is smart enough to not be overridden by multiple calls to set_flag/unset_flag. The original state means the state before ALL set_flag and unset_flags were made. And is remembered until reset_flag is called.
- set_flag
- Arguments:
$1- Single letter flag to set- Output:
Stores original state in
VSI_COMMON_SET_FLAG_<flag>
Turns on a bash option, remembers the previous state
Note
The original state is smart enough to not be overridden by multiple calls to set_flag/unset_flag. The original state is the state before ALL set_flag and unset_flag` calls were made, and is remembered until reset_flag is called.
Bugs
Doesn’t support o flag. The only options that are not duplicated are: vi, emacs, history, pipefail, and posix. Only pipefail and posix would be of interest, and are stored in SHELLOPTS.
- unset_flag
Same as set_flag, but unsets the flag
- reset_flag
Resets the flag to the previous state
Sets (or unsets) the flag to the state before the very first call to set_flag/unset_flag. Also clears the variable VSI_COMMON_SET_FLAG_<flag>
- set_flags
- Arguments:
$1- Multiple letters allowed
Same as set_flag, but sets multiple flags at once
- unset_flags
- Arguments:
$1- Multiple letters allowed
Same as unset_flag, but unsets multiple flags at once
- reset_flags
- Arguments:
$1- Multiple letters allowed
Same as reset_flag, but resets multiple flags at once
Note
If no arguments are given, all flags are reset
- _save_optflag
- Output:
Stores original state in
VSI_COMMON_SET_OPTFLAG_<flag>.
shopt version of _save_flag
- set_optflag
shopt version of set_flag
- unset_optflag
shopt version of unset_flag
- reset_optflag
shopt version of reset_flag
- set_optflags
- Arguments:
$1[...]- Multiple arguments allowed
Same as set_optflag, but set multiple opt flags at once
- unset_optflags
- Arguments:
$1[...]- Multiple arguments allowed
Same as unset_optflag, but unsets multiple opt flags at once
- reset_optflags
- Arguments:
$1[...]- Multiple arguments allowed
Same as reset_optflag, but unsets multiple opt flags at once
Note
If no arguments are given, all opt flags are reset
- _save_oflag
- Output:
Stores original state in
VSI_COMMON_SET_OFLAG_<flag>.
set -o version of _save_flag
Bugs
Since so many of the set flags overlap with “set -o” flags, these two features should not be mixed together and used simultaneously. The only exceptions are the “set -o” flags with no equivalent single letter representation, mainly pipefail and posix
- set_oflag
set -o version of set_flag
- unset_oflag
set -o version of unset_flag
- reset_oflag
set -o version of reset_flag
Bugs
Resetting certain flags does not return everything to status quo. For example, setting vi mode, and then resetting does not restore emacs mode. This is the only known bug, and is not important from a scripting point of view.
- set_oflags
- Arguments:
$1[...]- Multiple arguments allowed
Same as set_oflag, but sets multiple opt flags at once
- unset_oflags
Same as unset_oflag, but unsets multiple opt flags at once
- reset_oflags
Same as reset_oflag, but reset multiple flags at once
Note
If no arguments are given, all opt flags are reset