0

假设我编写了一个 bash 脚本,其中我提到了我的代码库的版本。(比如在 settings.php 下)。现在我想要一个 bash 脚本,它将获取另一个 bash 脚本中提到的代码库版本,在这种情况下我如何使用“Grep”命令。我试过了,但没有成功。请帮忙。

4

1 回答 1

0

grep是一个线匹配工具。它将输出找到匹配子字符串的整行。但是在bash脚本中你可以从中读取输出,但是使用read只会给你整个grep输出的最后一行。例如,如果输出grep "version"为:

version:1.1.1
module_version:0.1.2

然后read将只捕获最后一行module_version:0.1.2,而不是第一行。

假设您的文件中的案例有 line version:1.1.1。在 bash 脚本中你可以做

cat your_file | grep 'version'
read LINE

这会给你 variable LINE="version:1.1.1"。然后您将需要解析生成的字符串。但是由于我不确定字符串的格式是什么,所以我无法为您提供如何解析它的确切代码。

在获得更多详细信息后,这里是合适的解决方案:

db_version=$(cat $portal_codebase_version/sites/default/settings.php | grep "$GLOBALS['sdm_version']" | sed -n -e "s/^[^=]*= '[^ ]* \(.*\)';$/\1/p")

这给了你

$ echo $db_version 
3.8.0.4
$
于 2012-11-29T05:26:57.433 回答