Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
becki:linux:bash [2015-06-03 09:25] becki |
becki:linux:bash [2016-03-03 11:25] (aktuell) becki [File Inclusion, Command Execution] |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Bash Programming ====== | + | ====== Bash Programming == |
| + | ===== Documentation == | ||
| + | |||
| + | - [[kman>man1/bash.1|Bash man page]] | ||
| + | - [[http://tldp.org/LDP/abs/html/|Advanced Bash-Scripting Guide]] | ||
| ===== File Inclusion, Command Execution == | ===== File Inclusion, Command Execution == | ||
| Zeile 12: | Zeile 16: | ||
| **command** | **command** | ||
| - | when the shell encounters a command, it forks off a child process to actually execute the command (external commands only; from abs-guide) FIXME: Is this true? Isn't this ''%%command &%%''? | + | when the shell encounters a command, it forks off a child process to actually execute the command (external commands only; from abs-guide). Parent script blocks until child process ends |
| + | |||
| + | **command &** | ||
| + | |||
| + | forks off a child process to execute the command and put child process into background so that the parent script continues immediately | ||
| **eval command ...** | **eval command ...** | ||
| Zeile 19: | Zeile 27: | ||
| For me useful if command contains spaces witch are protected by single quotes, eg ''%%wget -S --header'Content-Type: application/json'%%''. Without eval, ''%%--header'Content-Type:%%'' and ''%%application/json'%%'' would be interpreted as 2 single arguments | For me useful if command contains spaces witch are protected by single quotes, eg ''%%wget -S --header'Content-Type: application/json'%%''. Without eval, ''%%--header'Content-Type:%%'' and ''%%application/json'%%'' would be interpreted as 2 single arguments | ||
| + | |||
| + | ===== Subshells == | ||
| + | |||
| + | FIXME | ||
| + | |||
| + | ===== Coprocesses == | ||
| + | |||
| + | The following example starts a shell function as a coproc and uses the coproc to manipulate a string: | ||
| + | |||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | test_coproc() { | ||
| + | read rein | ||
| + | echo ">$rein<" | ||
| + | } | ||
| + | |||
| + | coproc test_coproc | ||
| + | |||
| + | echo "Hallo" >&${COPROC[1]} | ||
| + | read -u ${COPROC[0]} rein | ||
| + | echo "$rein" | ||
| + | #cat <&${COPROC[0]} # alternative | ||
| + | </code> | ||
| ===== Expansion == | ===== Expansion == | ||