为tmux状态栏运行自定义zsh功能不显示输出

时间:2016-11-05 21:14:25

标签: zsh tmux

我写了一个名为I wrote the regex for it .*[^a-z]'[^a-z].* But I am not getting the desired output in my java code. String s = "don't try to ''''remove apostr inside'''' word'"; s = s.replace(".*[^a-z]'[^a-z].*", " "); 的函数,我试图将其合并到我的tmux状态栏中。为了给出一些背景知识,我的测试将输出到一个名为test_status的文件,其中包含.guard_resultsuccessfailure函数从该文件中读取并回显如果我的测试是传球和❤️如果他们失败了。

好消息是test_status运行正常,我只是无法使用tmux。我在这里缺少什么?

test_status

此功能有效......这是Tmux配置(不显示结果):

#  ~/.oh-my-zsh/custom/aliases.zsh

function test_status {
  if [ ! -f "./.guard_result" ]; then
    echo "?"
    return 1
  fi

  result="$(cat ./.guard_result)"

  if [[ $result == *"success"* ]]
  then
    echo "";
  elif [[ $result == *"fail"* ]]
  then
    echo "❤️";
  fi
}

我知道我必须遗漏一些简单的东西......谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

tmux将shell命令传递给/bin/sh而不是zsh。即使tmux使用zsh,该函数也无法在该上下文中使用~/.zshrc,只加载 oh-my-zsh 用于交互式shell。

为了将test_status的输出转换为tmux,我建议将该函数放入zsh脚本并调用它。

您可以在脚本中找到~/.oh-my-zsh/custom/aliases.zsh,然后拨打test_status

#!/usr/bin/zsh
#  ^ make sure this reflects the path to zsh (`type zsh`)

source ~/.oh-my-zsh/custom/aliases.zsh
test_status

或者您可以将整个函数放入脚本中,以免混乱alias.zsh

#!/usr/bin/zsh
function test_status {
    if [ ! -f "./.guard_result" ]; then
        echo "?"
        return 1
    fi

    result="$(cat ./.guard_result)"

    if [[ $result == *"success"* ]]
    then
        echo "";
    elif [[ $result == *"fail"* ]]
    then
        echo "❤️";
    fi
}

在某处保护脚本(例如/path/to/test_status.zsh),使其可执行(chmod a+x /path/to/test_status.zsh)并按tmux配置中的路径调用。