gpt4 book ai didi

fish - 在脚本中定义新的 fish 命令并解析参数

转载 作者:行者123 更新时间:2023-12-05 01:40:30 26 4
gpt4 key购买 nike

快速提问。是否可以通过在 fish 中编写脚本来定义新命令?我想按照以下方式编写一个新命令:

newFunction --flag1 flag1Input --flag2 flag2Input then space delimited arguments

这个新函数只能通过以函数的方式使用已经定义的命令,我只想能够将标志传递给这个新函数。这可能吗,还是我必须使用另一种语言(如 Python)来为我的假设命令创建可执行文件?

最佳答案

当然!就像在 bash(或任何解释性语言)中一样,您需要做的就是创建一个文件,赋予它执行权限并在其中编写您的 fish 脚本!

  • 该文件的第一行应该是 #!/usr/bin/fish(如果您的 fish 安装位于其他位置,请修改该路径。您可以通过调用 which fish )
  • 开始编写您的 fish 脚本,您的参数将是 $argv[1]$argv[2]...等
  • 给你的脚本执行权限:chmod +x myscript
  • 将您的脚本放在 $PATH 中的某处(例如 /usr/local/bin),以便您可以像系统中的其他命令一样调用它。<

这是一个无用的示例脚本,它打印出您传递的参数:

#!/usr/bin/fish

for i in $argv
echo $i
end

要解析参数,您可以使用 argparsefish_opt .

你要做的是:你用 fish_opt 指定你的标志是什么:

set -l options (fish_opt -s n -l name --required-val)
set options $options (fish_opt -s h -l help)

其中 -s 后跟标志的短格式,-l 后跟长格式。

然后您使用 argparse 来解析您的参数,如下所示:

argparse $options -- $argv

然后你可以像这样检查你的标志:

if set -q _flag_help
echo "Haalp!"
return 0
end

请注意,无论您的标志名称是什么,它都将被设置为格式为 _flag_myflag

的变量

这是一个完整的例子:

#!/usr/bin/fish

set -l options (fish_opt -s n -l name --required-val)
set options $options (fish_opt -s h -l help)

argparse $options -- $argv

if set -q _flag_help
echo "Haalp!"
exit 0
end

if set -q _flag_name
echo My name is $_flag_name
exit 0
end

现在我们称它为:

$ myscript
$ myscript --help
Haalp!
$ my_script --name "Anthony"
My name is Anthony

关于fish - 在脚本中定义新的 fish 命令并解析参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com