使用 echo 连接两个字符串以通过管道传输到另一个命令
Use echo to concatenate two strings to pipe to another command
我正在尝试使用此命令根据安装的 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\
returns 类似于 1.6 或 1.8,所以我试图将其与“> 1.6”连接起来以获得类似“1.8> 1.6”的表达式。
所以我不太确定该怎么做。
这也在 .tmux.conf 文件中进行,因此我认为我无法先将第一部分的结果存储在另一个变量中。
剪切命令中不应包含 \
。这有效
echo "$(tmux -V | cut -d ' ' -f2) >1.6" | bc
另外,你可以试试这个:
echo "$(tmux -V | awk '{print }') >1.6" | bc
并且测试应该与 1 进行比较:
if [[ "$(echo "$(tmux -V | awk '{print }') >1.6" | bc)" -eq 1 ]]; then
echo "version above 1.6"
else
echo "please update your version"
fi
请理解,进行 "floating point" 测试意味着 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
我正在尝试使用此命令根据安装的 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\
returns 类似于 1.6 或 1.8,所以我试图将其与“> 1.6”连接起来以获得类似“1.8> 1.6”的表达式。
所以我不太确定该怎么做。 这也在 .tmux.conf 文件中进行,因此我认为我无法先将第一部分的结果存储在另一个变量中。
剪切命令中不应包含 \
。这有效
echo "$(tmux -V | cut -d ' ' -f2) >1.6" | bc
另外,你可以试试这个:
echo "$(tmux -V | awk '{print }') >1.6" | bc
并且测试应该与 1 进行比较:
if [[ "$(echo "$(tmux -V | awk '{print }') >1.6" | bc)" -eq 1 ]]; then
echo "version above 1.6"
else
echo "please update your version"
fi
请理解,进行 "floating point" 测试意味着 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