Передача аргументов по ссылке

На странице руководства Bash shell-script (расширение параметров):

    If the first  character of parameter is an exclamation  point (!), a
    level of variable indirection is  introduced. Bash uses the value of
    the variable  formed from the rest  of parameter as the  name of the
    variable; this variable  is then expanded and that value  is used in
    the rest  of the  substitution, rather than  the value  of parameter
    itself. This is known as indirect expansion.

Следовательно, ссылка .bash-profile - это имя переменной. Вот bashrc функция swap, использующая косвенное passing-by-reference обращение к переменной, не bashrc требующее временной переменной:

function swap()
{   # 
    # @param VARNAME1 VARNAME2
    #
    eval "$1=${!2} $2=${!1}"
}

$ a=1 b=2
$ swap a b
$ echo $a $b
2 1

bash

shell

scripting

pass-by-reference

2022-09-13T22:44:52+00:00