Fish 一直认为字符串是命令行应用程序的名称

问题描述

function projects
    set name $argv[1]
    if $name == "list"; ls ~/projects/; 

    else; set dir ~/projects/$name
        cd $dir
        ls $dir;
    end
end

我正在尝试创建一个函数 projects,当字符串 "list" 作为参数传入时,它会列出项目目录中的所有内容。但是如果是别的东西,它会ls进入项目目录内的文件夹。但现在它一直认为 "list"一个命令行应用程序。

我试过 string collect 并回显输出

set value string collect -N "Hi there"
echo $value

当我运行命令时,根本没有输出。我尝试了使用 string collect 的细微变化,例如 set value string collect -N | "Hi there" set value (string collect -N | "Hi there")。这些也没有输出没有回显。

所以我想知道如何将字符串作为参数传递,而不会让鱼认为它们是命令行应用程序。

更新

正如@NottheDr01ds 所指出的,解决方案是改用 if test [condition]。结果是:

function projects
    set name $argv[1]
    if test $name = "list"; ls ~/projects/;
    else; set dir ~/projects/$name
        cd $dir
        ls $dir
    end
end

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)