强制为“别名”生成的函数中的参数顺序

问题描述

当我创建别名时: alias "myA" "PREFIX $argv SUFFIX" fish生成一个函数,其功能"PREFIX SUFFIX $argv等价。 是否有一种技巧/破解/合法的方法来强制shell,以使调用myA 1234被执行为PREFIX 1234 SUFFIX

我知道如何通过编写函数来做到这一点。我实时生成了大约15个以上的字符串,并且PREFIX,SUFFIX字符串不断变化。因此编写函数是不现实的。

谢谢!

欢呼;最好,

shankar

解决方法

您似乎误解了alias命令的功能。它确实定义了一个功能。但这并没有您暗示的转变。这样做似乎是因为您将别名定义双引号。这意味着在创建函数之前先对$argv进行插值。如果很可能未定义$argv(或空数组),则"PREFIX $argv SUFFIX"等效于"PREFIX SUFFIX"

要回答您的问题:不,无法使用alias命令来执行您想要的操作。坦率地说,我认为alias绝对不应该添加到鱼中,因为它并不需要,只会使从“别名”概念非常不同的bash迁移的人们感到困惑。替换很简单

alias myA "PREFIX $argv SUFFIX"

使用

function myA; PREFIX $argv SUFFIX; end