问题描述
当我创建别名时:
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