我想在我的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 . }
有没有办法在函数定义中强制进行变量扩展?
注意:为了澄清,我更改了示例
答案 0 :(得分:3)
您可以使用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 .
}
答案 1 :(得分:1)
这是使用别名的好时机:
get_file() { echo scp "$1":"$2" .; }
SERVER=abc.com
alias geta="get_file $SERVER"
SERVER=xyz.com
alias getx="get_file $SERVER"
geta foo
getx bar
输出
scp abc.com:foo .
scp xyz.com:bar .
答案 2 :(得分:-1)
pserver(){
ping "$1"
}
然后:
pserver abc.com
那应该做的诀窍=)