我正在尝试使用此命令根据安装的tmux版本执行不同的操作.但由于版本是一个浮点数,我不能使用普通的bash检查,所以我试图使用bc
哪个接受"a"形式的参数
[[ echo `tmux -V | cut -d ' ' -f2` "> 1.6" | bc ]]
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,我会
-bash: conditional binary operator expected
-bash: syntax error near `-f2`>'
Run Code Online (Sandbox Code Playgroud)
第一部分tmux -V | cut -d ' ' -f2\
返回类似1.6或1.8的内容,所以我试图用"> 1.6"连接它以获得类似"1.8> 1.6"的表达式.
所以我不确定该怎么做.这也是在.tmux.conf文件中,所以我认为我不能先将第一部分的结果存储在另一个变量中.
你不应该\
在cut命令中有一个.这有效
echo "$(tmux -V | cut -d ' ' -f2) >1.6" | bc
Run Code Online (Sandbox Code Playgroud)
另外,你可以试试这个:
echo "$(tmux -V | awk '{print $2}') >1.6" | bc
Run Code Online (Sandbox Code Playgroud)
测试应该与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
Run Code Online (Sandbox Code Playgroud)
请理解,进行"浮点"测试意味着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
Run Code Online (Sandbox Code Playgroud)