Oti*_*ght 3 shell zsh intellij-idea tmux
所以我有以下片段:
if [[ ps -p$PPID | grep 'java' == '' ]]; then
ZSH_TMUX_AUTOSTART=true;
fi
Run Code Online (Sandbox Code Playgroud)
返回以下错误:
/home/otis/.zshrc:8: parse error: condition expected: ps
Run Code Online (Sandbox Code Playgroud)
这个想法是,如果ps -p$PPID | grep 'java'不返回任何内容,则设置ZSH_TMUX_AUTOSTART=true。
我想这样做的原因是我想在我的 gnome 终端中自动启动 tmux,而不是在我的 intellij 终端中,如果我在 gnome 中运行此命令,它不会返回任何内容,如果我从 intellij 运行,它会返回java。
所以逻辑基本上是可靠的,如果没有返回任何内容,总是启动 tmux,但我不太擅长 shell,所以任何帮助将不胜感激。
干杯。
我意识到这是一个旧线程,并且 TERMINAL_EMULATOR 变量在原始帖子发布时可能不一样,但我通过以下方法在 OSX 上解决了这个问题:
if [ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm"]
then
ZSH_TMUX_AUTOSTART=true
fi
Run Code Online (Sandbox Code Playgroud)
您收到错误消息的原因是条件表达式 ( [[ \xe2\x80\xa6 ]]) 需要 after 条件ps,而该条件是字符串而不是命令。您必须将命令包装起来$(\xe2\x80\xa6)才能在条件表达式中使用其输出。或者,您可以仅使用退出代码grep来确定是否已找到“java”,这样就不需要条件表达式了。
if ! ps -p $PPID | grep -q java; then\n ZSH_TMUX_AUTOSTART=true;\nfi\nRun Code Online (Sandbox Code Playgroud)\n\n请注意,检查的返回值与您最初的预期相反。因此,如果退出代码为,则!返回,反之亦然。只是抑制 的输出。truefalse-qgrep
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |