mirror of
https://github.com/dylanaraps/pure-bash-bible.git
synced 2025-09-01 19:33:09 +02:00
add alternative to command substitution for func return
This commit is contained in:
19
README.md
19
README.md
@@ -161,6 +161,7 @@ See something incorrectly described, buggy or outright wrong? Open an issue or s
|
|||||||
* [Bypass shell aliases](#bypass-shell-aliases)
|
* [Bypass shell aliases](#bypass-shell-aliases)
|
||||||
* [Bypass shell functions](#bypass-shell-functions)
|
* [Bypass shell functions](#bypass-shell-functions)
|
||||||
* [Run a command in the background](#run-a-command-in-the-background)
|
* [Run a command in the background](#run-a-command-in-the-background)
|
||||||
|
* [Capture function return without command substitution](#capture-the-return-value-of-a-function-without-command-substitution)
|
||||||
* [AFTERWORD](#afterword)
|
* [AFTERWORD](#afterword)
|
||||||
|
|
||||||
<!-- vim-markdown-toc -->
|
<!-- vim-markdown-toc -->
|
||||||
@@ -2169,6 +2170,24 @@ bkr() {
|
|||||||
bkr ./some_script.sh # some_script.sh is now running in the background
|
bkr ./some_script.sh # some_script.sh is now running in the background
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Capture the return value of a function without command substitution
|
||||||
|
|
||||||
|
**CAVEAT:** Requires `bash` 4+
|
||||||
|
|
||||||
|
This uses local namerefs to avoid using `var=$(some_func)` style command substitution for function output capture.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
to_upper() {
|
||||||
|
local -n ptr=${1}
|
||||||
|
|
||||||
|
ptr=${ptr^^}
|
||||||
|
}
|
||||||
|
|
||||||
|
foo="bar"
|
||||||
|
to_upper foo
|
||||||
|
printf "%s\n" "${foo}" # BAR
|
||||||
|
```
|
||||||
|
|
||||||
<!-- CHAPTER END -->
|
<!-- CHAPTER END -->
|
||||||
|
|
||||||
# AFTERWORD
|
# AFTERWORD
|
||||||
|
@@ -219,10 +219,26 @@ This will run the given command and keep it running, even after the terminal or
|
|||||||
bkr() {
|
bkr() {
|
||||||
(nohup "$@" &>/dev/null &)
|
(nohup "$@" &>/dev/null &)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bkr ./some_script.sh # some_script.sh is now running in the background
|
||||||
```
|
```
|
||||||
|
|
||||||
```shell
|
## Capture the return value of a function without command substitution
|
||||||
bkr ./some_script.sh # some_script.sh is now running in the background
|
|
||||||
|
**CAVEAT:** Requires `bash` 4+
|
||||||
|
|
||||||
|
This uses local namerefs to avoid using `var=$(some_func)` style command substitution for function output capture.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
to_upper() {
|
||||||
|
local -n ptr=${1}
|
||||||
|
|
||||||
|
ptr=${ptr^^}
|
||||||
|
}
|
||||||
|
|
||||||
|
foo="bar"
|
||||||
|
to_upper foo
|
||||||
|
printf "%s\n" "${foo}" # BAR
|
||||||
```
|
```
|
||||||
|
|
||||||
<!-- CHAPTER END -->
|
<!-- CHAPTER END -->
|
||||||
|
Reference in New Issue
Block a user