从文件中提取版本字符串的最佳方法是什么?

Fro*_*sty 1 bash scripting perl

我想使用一个文件存储一个客户软件的当前版本号,启动脚本可以使用该文件在正确的目录中运行二进制文件.

例如,如果运行目录如下所示:

.
..
1.2.1
1.2.2
1.3.0
run.sh
current_version
Run Code Online (Sandbox Code Playgroud)

而且current_version包含:

1.2.2
Run Code Online (Sandbox Code Playgroud)

我想run.sh进入1.2.2并运行程序foo.

目前的解决方案是:

#!/bin/sh
version = `cat current_version`
cd $version
./foo
Run Code Online (Sandbox Code Playgroud)

它工作但不是很强大.它不检查文件是否存在,无法处理多行,前导空格,注释行,空白文件等.

使用shell或perl脚本执行此操作的最可行方法是什么?

Dus*_*inB 5

这是一种常见的方法.您可以使用测试运算符检查目录/文件是否存在,例如"if [-d"somedirectory"];然后"或[-t"somefile"]

不过,我更经常使用符号链接.然后,您只需更改符号链接即可使用所需的版本.

例如,

$ ln -s 1.2.2 current_version
$ ls -al
total 20
drwxr-xr-x 5 dbreese dbreese 4096 2008-09-15 13:34 .
drwxr-xr-x 3 dbreese dbreese 4096 2008-09-15 13:34 ..
drwxr-xr-x 2 dbreese dbreese 4096 2008-09-15 13:34 1.2.1
drwxr-xr-x 2 dbreese dbreese 4096 2008-09-15 13:34 1.2.2
drwxr-xr-x 2 dbreese dbreese 4096 2008-09-15 13:34 1.3.0
lrwxrwxrwx 1 dbreese dbreese    6 2008-09-15 13:34 current_version -> 1.2.2/

然后你的脚本可以使用"cd current_version".