shell_or_bash_scripts
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
shell_or_bash_scripts [2016/04/28 08:07] – skipidar | shell_or_bash_scripts [2022/10/14 06:01] (current) – [Double-Dash in Shell commands] skipidar | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Shell or Bash Scripts ===== | + | ====== Shell or Bash Scripts |
- | http://www.tldp.org/LDP/Bash-Beginners-Guide/html/Bash-Beginners-Guide.html | + | |Shebang|Header, |
+ | |Sourcing| < | ||
+ | < | ||
+ | vs Execute in current shell: | ||
+ | < | ||
+ | ===== Guides===== | ||
- | == declare Function== | + | |https:// |
+ | |http:// | ||
+ | |https:// | ||
+ | |http:// | ||
+ | |http:// | ||
+ | |||
+ | ===== Executing or Sourcing the script===== | ||
+ | |||
+ | Sourcing. | ||
+ | Execute in the **CURRENT** shell | ||
+ | < | ||
+ | |||
+ | Executing. | ||
+ | Execute in a **NEW** shell - e.g. cd doesn' | ||
+ | < | ||
+ | |||
+ | |||
+ | ===== Syntax ===== | ||
+ | |||
+ | ==== declare Function==== | ||
Returning result is done via **echo** | Returning result is done via **echo** | ||
Line 39: | Line 63: | ||
</ | </ | ||
- | == declare Map == | + | ==== declare Map ==== |
Big A!!! | Big A!!! | ||
< | < | ||
Line 50: | Line 74: | ||
</ | </ | ||
- | == iterate array keys == | + | ==== iterate array keys ==== |
Access via **${!array[@]}** | Access via **${!array[@]}** | ||
Line 61: | Line 85: | ||
</ | </ | ||
- | == dereference an array / map value == | + | ==== dereference an array / map value ==== |
< | < | ||
${ARRAY[2]} | ${ARRAY[2]} | ||
Line 68: | Line 92: | ||
== If Else == | == If Else == | ||
+ | * Empty spaces after the parenthesis are critical: **[ $a==$b ]** | ||
+ | * | ||
+ | |||
< | < | ||
- | # check if it is the oot device | + | # check if it is the root device |
- | if [ $device_name=$root_device_name ]; | + | if [ $device_name==$root_device_name ] |
then | then | ||
echo " | echo " | ||
+ | else | ||
+ | echo "NOT root" | ||
fi | fi | ||
</ | </ | ||
- | == Command Substitution == | + | ==== Command Substitution |
Command substitution allows the output of a command to replace the command itself. Command substitution occurs when a command is enclosed like this: | Command substitution allows the output of a command to replace the command itself. Command substitution occurs when a command is enclosed like this: | ||
Line 89: | Line 118: | ||
`command` | `command` | ||
</ | </ | ||
+ | |||
+ | |||
+ | ==== Input from command line ==== | ||
+ | If a command expects **a file** as input - one can pass input from STDOUT instead, | ||
+ | without storing the output to a file first by using following syntax | ||
+ | |||
+ | **oc create -f** expects a file here. | ||
+ | |||
+ | < | ||
+ | oc process -f build/ | ||
+ | oc process -f build/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Double-Dash -- in Shell commands ==== | ||
+ | A double-dash in a shell command signals the end of options and disables further option processing. | ||
+ | https:// | ||
+ | |||
+ | |||
+ | <sxh shell> | ||
+ | # If we use the same approach, we'll receive an error: | ||
+ | # That's because grep treats " | ||
+ | grep " | ||
+ | |||
+ | #works | ||
+ | grep -- --hello data.txt | ||
+ | </ |
shell_or_bash_scripts.1461830826.txt.gz · Last modified: (external edit)