我想使用一个文件存储一个客户软件的当前版本号,启动脚本可以使用该文件在正确的目录中运行二进制文件.
例如,如果运行目录如下所示:
. .. 1.2.1 1.2.2 1.3.0 run.sh current_version
而且current_version包含:
1.2.2
我想run.sh
进入1.2.2并运行程序foo
.
目前的解决方案是:
#!/bin/sh version = `cat current_version` cd $version ./foo
它工作但不是很强大.它不检查文件是否存在,无法处理多行,前导空格,注释行,空白文件等.
使用shell或perl脚本执行此操作的最可行方法是什么?
这是一种常见的方法.您可以使用测试运算符检查目录/文件是否存在,例如"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".