我正在尝试编写一个bash脚本,该脚本会增加给出的版本号
{major}.{minor}.{revision}
Run Code Online (Sandbox Code Playgroud)
例如.
1.2.13
Run Code Online (Sandbox Code Playgroud)
是否有一种很好的方法可以使用像sed或awk这样的东西轻松提取这3个数字,这样我就可以增加{revision}数字并输出完整的版本号字符串.
我想比较两个十进制值,但我收到错误.我用了
if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then
Run Code Online (Sandbox Code Playgroud)
正如其他Stack Overflow线程所建议的那样.
我收到了错误.
这是怎样的正确方法?
我有一个包含组件和版本号的字符串:
data-c(kuh-small1);divider-bin-1.4.4;divider-conf-1.3.3-w(1,16);storage-bin-1.5.4;storage-conf-1.5.0-w(1);worker-bin-4.5.1;worker-conf-4.4.1-c(kuh)-win2
对于shell脚本,我需要提取分隔符二进制文件的版本号.所以我需要屈服:
1.4.4
这样做有什么好办法?用sed?
我试图编写一个bash脚本来测试python版本.但是,我发现python --versionpython 2表现得很奇怪,因为我无法使用任何工具处理它的输出.我在Mac OS(10.13.5)和AWS Linux(GUN/Linux#1 SMP Fri Feb 16 00:18:48 UTC 2018)上测试了相同的脚本.所以我认为这个问题与python 2有关.
脚本和相应的输出是:
$ echo $(python --version) | awk '{print $2}'
> Python 2.7.10
Run Code Online (Sandbox Code Playgroud)
但输出应该是2.7.10.
$ echo $(python --version) > weird.txt
> Python 2.7.10
$ cat weird.txt
>
Run Code Online (Sandbox Code Playgroud)
因此输出也不能写入文件.
测试python3的相同脚本有一个完全不同的结果
$ echo $(python3 --version) | awk '{print $2}'
> 3.6.5
Run Code Online (Sandbox Code Playgroud)
但python3的输出可以写入文件.
$ echo $(python3 --version) > weird.txt
$ cat weird.txt
> Python 3.6.5
Run Code Online (Sandbox Code Playgroud)
我发现这种差异的原因是python --version不输出正常的字符串或任何东西.也许它调用另一个命令来输出结果??? 因此结果不能被当前的过程捕获?(这里只是猜测)
任何人都可以帮我弄清楚为什么这里有区别?可能有百万种方法来测试python版本.但我对这里发生的事情非常好奇.
感谢所有的答复.刚刚找到一个有用的答案解释为什么python -V输出到stderr: 为什么python打印版本信息到stderr?