Bash 赋值时使用\$

Bash 赋值时使用\$,bash,Bash,我知道还有其他方法可以实现下面代码表示的相同逻辑,但我特别想理解下面的代码 a和b函数都提供相同的结果。在(eval$1=\$result)中使用\$in有什么好处 #$1 varible to assign result function x { local result=12345 eval $1=$result } #$1 varible to assign result function y { local result=12345 eval $1=\$result

我知道还有其他方法可以实现下面代码表示的相同逻辑,但我特别想理解下面的代码

a和b函数都提供相同的结果。在(eval$1=\$result)中使用
\$in有什么好处

#$1 varible to assign result
function x {
  local result=12345
  eval $1=$result
}


#$1 varible to assign result
function y {
  local result=12345
  eval $1=\$result
}


x a
echo $a # 12345
x b
echo $b # 12345

\
表示在为
eval
创建参数时,结果的评估被延迟,并由
eval
完成,而不是评估结果

前者(
x
)用于:

后者(
y
)的作用是:

对于大多数用例,没有区别。但是,如果字符串中有空格,则会注意到一个差异

例如

给出:

bash: 2: command not found
1 2 3
何处为

function y {
    result='1 2 3'
    eval $1=\$result
}
y b
echo $b
给出:

bash: 2: command not found
1 2 3

\
表示在为
eval
创建参数时,结果的评估被延迟,并由
eval
完成,而不是评估结果

前者(
x
)用于:

后者(
y
)的作用是:

对于大多数用例,没有区别。但是,如果字符串中有空格,则会注意到一个差异

例如

给出:

bash: 2: command not found
1 2 3
何处为

function y {
    result='1 2 3'
    eval $1=\$result
}
y b
echo $b
给出:

bash: 2: command not found
1 2 3