使用echo将两个字符串连接到另一个命令的管道

时间:2016-09-24 04:10:05

标签: bash tmux

我正在尝试使用此命令根据安装的tmux版本执行不同的操作。 但由于版本是一个浮点数,我不能使用正常的bash检查,所以我试图使用bc以“a”的形式接受参数

[[ echo `tmux -V | cut -d ' ' -f2` "> 1.6" | bc ]]

但如果我这样做,我会

-bash: conditional binary operator expected
-bash: syntax error near `-f2`>'

第一部分tmux -V | cut -d ' ' -f2\返回类似1.6或1.8的内容,因此我尝试将其与“> 1.6”连接起来,以获得类似“1.8> 1.6”的表达式。

所以我不确定如何做到这一点。 这也是在.tmux.conf文件中,因此我认为我不能先将第一部分的结果存储在另一个变量中。

1 个答案:

答案 0 :(得分:6)

切割命令中不应该有\。这工作

echo "$(tmux -V | cut -d ' ' -f2) >1.6" | bc

另外,你可以试试这个:

echo "$(tmux -V | awk '{print $2}') >1.6" | bc

测试应该与1比较:

if [[ "$(echo "$(tmux -V | awk '{print $2}') >1.6" | bc)" -eq 1 ]]; then
    echo "version above 1.6"
else
    echo "please update your version"
fi

请理解,执行“浮点”测试意味着1.11小于1.6
我相信不是我想要的。

正确的测试需要在点上拆分版本字符串并比较两个数值(整数)值:

#!/bin/bash

IFS=' .' read _ one two <<< "$( tmux -V )"

if (( ( one == 1 && two > 6 ) || one > 1 )); then
    echo "version above 1.6 present"
else
    echo "please update tmux to a version higher than 1.6"
fi