我想在我的bashrc里做这样的事

SERVER=abc.com
geta() { scp ${SERVER}:$1 . ;}

SERVER=xyz.com
getx() { scp ${SERVER}:$1 . ;}

declare -f geta getx
geta ()
{
    scp ${SERVER}:$1 .
}
getx ()
{
    scp ${SERVER}:$1 .
}

我想把geta和getx设置为
geta () { scp abc.com:$1 . }
getx () { scp xyz.com:$1 . }

函数定义中是否有强制变量扩展的方法?
注:为了澄清,我更改了示例

最佳答案

您可以使用eval(退出$以便$1不会被扩展)

SERVER=abc.com
eval "geta() { scp ${SERVER}:\$1 . ;}"
SERVER=xyz.com
eval "getx() { scp ${SERVER}:\$1 . ;}"

declare -f geta getx的输出
geta ()
{
    scp abc.com:$1 .
}
getx ()
{
    scp xyz.com:$1 .
}

10-07 16:24
查看更多