{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute will ensure that the output of traceroute foss.org.my is displayed first.
Finally, Parallel can be used to run a sequence of shell commands in parallel, similar to
‘cat file | bash’. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, and feed that list of commnds to a shell. Parallel can speed this up. Assuming that file contains a list of shell commands, one per line, parallel -j 10 < file will evaluate the commands using the shell (since no explicit command is supplied as an argument), in blocks of ten shell jobs at a time.
3.3 Shell Functions
Shell functions are a way to group commands for later execution using a single name for the group. They are executed just like a "regular" command. When the name of a shell function is used as a simple command name, the list of commands associated with that function name is executed. Shell functions are executed in the current shell context; no new process is created to interpret them.
Functions are declared using this syntax: name () compound-command [ redirections ] or function name [()] compound-command [ redirections ]
This defines a shell function named name. The reserved word function is optional. If the function reserved word is supplied, the parentheses are optional. The body of the function is the compound command compound-command (see Section 3.2.4 [Compound
Commands], page 9). That command is usually a list enclosed between { and }, but may be any compound command listed above. compound-command is executed whenever name is specified as the name of a command. When the shell is in posix mode (see Section 6.11
[Bash POSIX Mode], page 94), name may not be the same as one of the special builtins
(see Section 4.4 [Special Builtins], page 68). Any redirections (see Section 3.6 [Redirections], page 31) associated with the shell function are performed when the function is executed.
A function definition may be deleted using the -f option to the unset builtin (see
Section 4.1 [Bourne Shell Builtins], page 41).
The exit status of a function definition is zero unless a syntax error occurs or a readonly function with the same name already exists. When executed, the exit status of a function is the exit status of the last command executed in the body.
Note that for historical reasons, in the most common usage the curly braces that surround the body of the function must be separated from the body by blanks or newlines. This is because the braces are reserved words and are only recognized as such when they are separated from the command list by whitespace or another shell metacharacter. Also, when using the braces, the list must be terminated by a semicolon, a ‘&’, or a newline.
When a function is executed, the arguments to the function become the positional pa- rameters during its execution (see Section 3.4.1 [Positional Parameters], page 19). The special parameter ‘#’ that expands to the number of positional parameters is updated to reflect the change. Special parameter 0 is unchanged. The first element of the FUNCNAME variable is set to the name of the function while the function is executing.