相关疑难解决方法(0)

从shell脚本中的文件中提取版本号

我正在尝试编写一个bash脚本,该脚本会增加给出的版本号

{major}.{minor}.{revision}
Run Code Online (Sandbox Code Playgroud)

例如.

1.2.13
Run Code Online (Sandbox Code Playgroud)

是否有一种很好的方法可以使用像sed或awk这样的东西轻松提取这3个数字,这样我就可以增加{revision}数字并输出完整的版本号字符串.

bash shell scripting sed

31
推荐指数
6
解决办法
2万
查看次数

如何比较bash/awk中的两个十进制数?

我想比较两个十进制值,但我收到错误.我用了

if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then
Run Code Online (Sandbox Code Playgroud)

正如其他Stack Overflow线程所建议的那样.

我收到了错误.

这是怎样的正确方法?

bash shell awk

21
推荐指数
4
解决办法
6万
查看次数

从字符串中提取版本号

我有一个包含组件和版本号的字符串:

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?

unix bash shell scripting sed

5
推荐指数
2
解决办法
1万
查看次数

为什么'python --version'不能打印字符串

我试图编写一个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?

python bash

4
推荐指数
1
解决办法
243
查看次数

标签 统计

bash ×4

shell ×3

scripting ×2

sed ×2

awk ×1

python ×1

unix ×1