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脚本执行此操作的最可行方法是什么?
这是一种常见的方法.您可以使用测试运算符检查目录/文件是否存在,例如"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".