强制为 "alias" 生成的函数中的参数顺序

Forcing the order of arguments in function generated for a "alias"

当我创建别名时: alias "myA" "PREFIX $argv SUFFIX" fish 生成一个主体等同于:"PREFIX SUFFIX $argv 的函数。 是否有一种 trick/hack/legitimate 方法来强制 shell 以便调用 myA 1234 作为 PREFIX 1234 SUFFIX 执行?

我知道如何通过编写函数来做到这一点。我动态生成了大约 15 个以上的字符串,并且 PREFIX、SUFFIX 字符串经常变化。所以写个函数不太实用

谢谢!

干杯; '最好的,

香卡

您似乎误解了 alias 命令的作用。它确实定义了一个函数。但它不会做你暗示的转变。这样做似乎只是因为您 double-quoted 别名定义。这意味着 $argv 在创建函数之前被插入。如果(很可能是这种情况)$argv 未定义(或空数组),则 "PREFIX $argv SUFFIX" 等同于 "PREFIX SUFFIX".

回答你的问题:不,没有办法使用 alias 命令做你想做的事。老实说,我认为 alias 永远不应该添加到 fish 中,因为它不需要,而且只会让从 bash 迁移过来的人感到困惑,因为“别名”的概念非常不同。替换

很简单
alias myA "PREFIX $argv SUFFIX"

function myA; PREFIX $argv SUFFIX; end