Bash set: Difference between revisions
(→-x) |
(→+x) |
||
Line 46: | Line 46: | ||
=+x= | =+x= | ||
Prevents commands from being echoed at stdout. It is useful to start a script with set +x in case sensitive credentials are specified in commands. |
Revision as of 20:17, 22 May 2018
External
- set man page http://linuxcommand.org/lc3_man_pages/seth.html
- https://www.gnu.org/software/bash/manual/html_node/The-Set-Builtin.html
Internal
set and Positional Parameters
arg="a b c" set - ${arg}
assigns "a", "b", "c" to positional parameters $1, $2 and $3. '-' that follows the builtin signals the end of options and causes all remaining arguments to be assigned to the positional parameters. This prevents arguments that start with "--..." to interfere with set function. If "-" is not specified, and the first of the space-separated arguments contains '--', set will try to interpret that sequence of characters and will produce:
set: --: invalid option
List Separator
The default list separator is space. That can be changed by setting the value of the IFS variable before executing set.
Example:
arg="a,b,c" IFS="," set ${arg}
will identically assign "a", "b", "c" to positional parameters $1, $2 and $3.
- Note you must set IFS back to whitespace after setting it to something else, so the basic shell function work as expected. This is done as shown here: restoring the default IFS value.
For more details about IFS see:
-x
After expanding each simple command and for, case and select commands, display the expanded value of PS4, followed by the command and its expanded arguments or associated word list. Useful in debugging.
+x
Prevents commands from being echoed at stdout. It is useful to start a script with set +x in case sensitive credentials are specified in commands.