问题描述
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 (将#修改为@)