>假设我写了一个bash脚本,其中我提到了我的代码库的版本。在设置下说.php)。现在我想要一个 bash 脚本,它将获取另一个 bash 脚本中提到的代码库版本,在这种情况下我如何使用"Grep"命令。我已经尝试过,但没有成功。请帮忙。
grep
是一个行匹配工具。它将输出整行,在其中找到匹配的子字符串。但是在脚本bash
你可以从中读取输出,但使用 read
只会给你整个grep
输出的最后一行。例如,如果grep "version"
的输出是:
version:1.1.1
module_version:0.1.2
然后read
只会捕获最后一行module_version:0.1.2
,而不是第一行。
假设您的文件中有第 version:1.1.1
行 .在 bash 脚本中你可以做
cat your_file | grep 'version'
read LINE
那会给你可变的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
$