所以,我最近下载了一个cli,它共享了很多类似于linux的命令。就像mega-login
: login
& mega-logout
:logout
我厌倦了每次需要使用 cli 时都编写大型文件。我想过使用别名,但我不想搞砸使用我不知道的其他命令的其他程序。就像如果我创建一个别名login
那么系统login
命令会发生什么?另外,cli 中有很多命令。
于是,我想到了用脚本,但不知道怎么做。这是我的想法。因此,当我使用m login
or时m logout
,它会搜索命令mega-login
或是否mega-logout
存在,然后调用它。
所以我在学习 Fish 的同时尝试了几个小时想出各种函数,这就是我写的。
function m --argument value $argv
echo value $value $argv
if type mega-$value
set MEGA
for temp in $argv
set MEGA $MEGA$temp
echo $MEGA
end
echo MEGA \n\n $MEGA
eval $MEGA
end
end
这还是不行。 PS:这是我第一次尝试写的,但一旦我无法弄清楚,我就放弃了。
function m --argument value $argv
echo value $value $argv
if type mega-$value
set MEGA mega-$argv
echo $argv \n\n\n $MEGA
eval $MEGA
end
end
答案1
第一次(和第二次)尝试还不错。要做到恰到好处可能很棘手。
怎么样:
function m
set -l mega_cmd "mega-$argv[1]"
set -l mega_args $argv[2..]
if type -q "$mega_cmd"
echo "Executing $mega_cmd $mega_args"
"$mega_cmd" $mega_args
end
end
当然,这是为了可读性(我更喜欢),但它可以简化为:
function m
if type -q "mega-$argv[1]"
echo "Executing mega-$argv[1] $argv[2..]"
"mega-$argv[1]" $argv[2..]
end
end