我正在尝试让if-shell
工作。我想实现以下内容:
1.检查vim是否正在运行
1.如果是,将status-left
设置为一个值
1.如果否,则将status-left
设置为另一个值
我为第1步编写了以下命令:
is_nvim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?|e)(diff)?$'; echo $?"
如果vim处于活动状态,则返回0,否则返回1。我用set -g status-left "#($is_nvim)"
测试了它,它在左下角正确地打印了0或1。
然后我尝试将此命令(is_nvim
)与if-shell
一起使用。我尽力了
if-shell "$(is_nvim)" "set -g status-left 'a'" "set -g status-left 'b'"
和/或
if-shell '[ "$(is_nvim)" -eq 1 ]' "set -g status-left 'a'" "set -g status-left 'b'"
但两次尝试都没有成功,我有点困惑为什么。
有谁知道为什么if-shell
不工作,尽管is_nvim
返回正确的值?
1条答案
按热度按时间mwyxok5s1#
要用变量的值替换变量,你需要在它的前缀加上
$
。使用$($is_nvim)
代替$(is_nvim)
。