Update 'bash_programming.md'
This commit is contained in:
parent
fcdb4f385e
commit
6f7836735a
|
@ -108,13 +108,28 @@ EOT
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Bash test. Returns True if test expression passes
|
||||||
|
```
|
||||||
|
if [ -z "${MAKE_TARGETS}" ]; then
|
||||||
|
# do stuff
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Bash negative test. Returns True if test expression does not passes
|
||||||
|
```
|
||||||
|
if [ ! -z "${MAKE_TARGETS}" ]; then
|
||||||
|
# do stuff
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
Common bash test expressions
|
Common bash test expressions
|
||||||
https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html and https://stackoverflow.com/a/21164441
|
https://www.gnu.org/software/bash/manual/html_node/Bash-Conditional-Expressions.html and https://stackoverflow.com/a/21164441
|
||||||
```
|
```
|
||||||
The following test operators return "True" if the file exists
|
The following test operators return "True" if the file exists
|
||||||
-a file :: Any file type
|
-a file :: Any file type
|
||||||
-e file :: Any file type
|
-e file :: Check for file existence, regardless of type (node, directory, socket, etc.)
|
||||||
-f file :: Any regular file (ie not a block, socket, pipe, symlink, etc.)
|
-f file :: Any regular file that is not a directory
|
||||||
-b file :: Block special file
|
-b file :: Block special file
|
||||||
-c file :: Character file
|
-c file :: Character file
|
||||||
-d file :: Directory type
|
-d file :: Directory type
|
||||||
|
@ -135,6 +150,7 @@ Other common test operators
|
||||||
-v varname :: True if 'varname' is set and has been assigned a value
|
-v varname :: True if 'varname' is set and has been assigned a value
|
||||||
-R varname :: True if varname is set and is a name reference
|
-R varname :: True if varname is set and is a name reference
|
||||||
-n string :: True if length of string is not zero
|
-n string :: True if length of string is not zero
|
||||||
|
-z string :: True if length of string is zero
|
||||||
string1 == string2 :: True if the strings are equal
|
string1 == string2 :: True if the strings are equal
|
||||||
string1 = string2 :: True if the strings are equal. POSIX conformant
|
string1 = string2 :: True if the strings are equal. POSIX conformant
|
||||||
string1 != string2 :: True if the strings are not equal
|
string1 != string2 :: True if the strings are not equal
|
||||||
|
@ -148,4 +164,29 @@ arg1 -lt arg2 :: True if arg1 is less than arg2
|
||||||
arg1 -le arg2 :: True if arg1 is less than or equal to arg2
|
arg1 -le arg2 :: True if arg1 is less than or equal to arg2
|
||||||
arg1 -gt arg2 :: True if arg1 is greater than arg2
|
arg1 -gt arg2 :: True if arg1 is greater than arg2
|
||||||
arg1 -ge arg2 :: True if arg1 is greater than or equal to arg2
|
arg1 -ge arg2 :: True if arg1 is greater than or equal to arg2
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Command substitution
|
||||||
|
https://www.gnu.org/software/bash/manual/html_node/Command-Substitution.html
|
||||||
|
```
|
||||||
|
$(command)
|
||||||
|
`command`
|
||||||
|
```
|
||||||
|
|
||||||
|
Shell Arthimetic - https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html
|
||||||
|
|
||||||
|
Brace expansions
|
||||||
|
https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html
|
||||||
|
```
|
||||||
|
mkdir /usr/local/src/bash/{old,new,dist,bugs}
|
||||||
|
```
|
||||||
|
or
|
||||||
|
```
|
||||||
|
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
|
||||||
|
```
|
||||||
|
|
||||||
|
Parameter (variable) expansion - https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html and https://wiki.bash-hackers.org/syntax/pe
|
||||||
|
|
||||||
|
GNU BASH reference - https://www.gnu.org/software/bash/manual/html_node/index.html
|
||||||
|
|
||||||
|
BASH Hackers Wiki - https://wiki.bash-hackers.org/
|
Loading…
Reference in New Issue