我尝试编写我的第一个 bash 函数但遇到了错误。
test() {
$1=/home;
}
我希望该函数将任何变量设置为/home。
预期示例:
test TEST
echo $TEST
/home
示例得到:
test TEST
sh: TEST=/home: No such file or directory
echo TEST
你能告诉我如何达到我的预期输出以及为什么我失败了吗?
答案1
通常,使用变量作为变量名会产生意想不到的错误。您应该能够做到这一点,但这需要大量转义。
如果您无论如何都想这样做,请使用eval
(shell 内置):
test() {
eval $1=/home
}
由于这是您的第一个功能,请允许我给您一些额外的提示。
test
通常是/usr/bin/test
。如果你用它作为函数名,你需要/usr/bin/test
用它的全名来调用。最好使用my_test
或类似的东西。- 以这种方式将变量用作左值(“左值”)的情况很少见。这种情况很少见,甚至 shellcheck 也会对此感到困惑。