强制为 "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
当我创建别名时:
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