【问题标题】:How do I convert this zsh function to fish shell?如何将此 zsh 函数转换为鱼壳?
【发布时间】:2017-01-17 08:01:27
【问题描述】:

我有这个在 zsh 中很好用的函数,但是我想把它转换成鱼壳,我不能让它工作。

function ogf () {
  echo "Cloning, your editor will open when clone has completed..."
  source <(TARGET_DIRECTORY=~/students EDITOR=$EDITOR clone_git_file -ts "$1")
}

【问题讨论】:

  • 您应该向我们展示您尝试过的解决方案。

标签: zsh fish


【解决方案1】:

首先,由于fish的语法和zsh不同,你还得把clone_git_file的输出改成source吧。

例如,如果clone_git_file 类似于:

#!/bin/bash
echo "FOO=$TARGET_DIRECTORY"
echo "BAR=$2"

你必须把它改成fish语法。

#!/bin/bash
echo "set -gx FOO $TARGET_DIRECTORY"
echo "set -gx BAR $2"

下面是ogf() 函数和fish 的示例代码:

function ogf
  echo "Cloning, your editor will open when clone has completed..."
  source (env TARGET_DIRECTORY=~/students EDITOR=$EDITOR clone_git_file -ts $argv[1] | psub)
end

ogf MY_ARGUMENT
echo "FOO is $FOO"
echo "BAR is $BAR"

用fish运行这段代码,输出为:

FOO is /home/MY_USER/students
BAR is MY_ARGUMENT

【讨论】:

  • 不错的答案。强调一下,注意env和psub的使用
  • 谢谢你,我今天试一试,只要有效就接受答案!
  • 还有bass 插件,它可以轻松使用将 sh/bash/zsh 变量赋值语句输出为有效 fish 语法的脚本:github.com/edc/bass
  • 我以前从未见过psub。为什么不只评估输出?
猜你喜欢
  • 2020-06-07
  • 2016-01-01
  • 2020-09-03
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 2021-12-12
相关资源
最近更新 更多