所以我有以下代码段:
if [[ ps -p$PPID | grep 'java' == '' ]]; then
ZSH_TMUX_AUTOSTART=true;
fi
返回以下错误:
/home/otis/.zshrc:8: parse error: condition expected: ps
我们的想法是,如果ps -p$PPID | grep 'java'
没有返回任何内容,请设置ZSH_TMUX_AUTOSTART=true
。
我想要这样做的原因是我想在我的gnome-terminal中自动启动tmux而不是在我的intellij终端中如果我在gnome中运行此命令它什么都不返回,如果我从intellij运行它会返回{{1} }。
所以逻辑基本上是稳固的,如果没有返回总是启动tmux,但我不擅长shell,所以任何帮助都会非常感激。
干杯。
答案 0 :(得分:4)
您收到错误消息的原因是条件表达式([[ … ]]
)期望ps
之后的条件,而字符串而不是命令。您必须将命令包装在$(…)
中以在条件表达式中使用其输出。或者,您可以使用grep
的退出代码来确定" java"已被发现,这消除了对条件表达式的需要。
if ! ps -p $PPID | grep -q java; then
ZSH_TMUX_AUTOSTART=true;
fi
请注意,支票的返回值与您最初的预期相反。因此,!
如果退出代码为true
则返回false
,反之亦然。 -q
只会抑制grep
的输出。
答案 1 :(得分:1)
我意识到这是一个旧线程,而TERMINAL_EMULATOR变量在原始帖子发布时可能并不相同,但是我在OSX上使用以下方法解决了这个问题:
if [ "$TERMINAL_EMULATOR" != "JetBrains-JediTerm"]
then
ZSH_TMUX_AUTOSTART=true
fi
答案 2 :(得分:1)
在您的项目中,在设置 > 工具 > 终端下,将环境变量设置为 INSIDE_EMACS=true
。