从bash命令输出结果中剥离特定部分



我是bash的新手,正在编写简单的脚本。。

我在脚本中使用以下命令:

php -i | sed -n '/^Loaded Configuration File/s/.*=> //p'

输出如下:

/etc/php/7.4/cli/php.ini

我想去掉版本部分,并将其保存到一个变量中,不带点。

我想制作一个只有php版本的变量,例如,在上面的结果中,我的变量应该是:

version=$"74"

如果php版本为7.3,则版本变量应为73。。等等

有什么办法吗?

如果您关心命令行版本,并且想要它的版本,您可以通过它运行PHP代码(-r开关(并直接获取信息:

VERSION="$(php -r 'echo PHP_MAJOR_VERSION, PHP_MINOR_VERSION;')"
printf '%sn' "$VERSION" # 74n

这使您无需通过管道进入sed(一般来说,这不是一个坏主意,但尽可能少做一些必要的事情,而且PHP已经知道它的版本(。

  • https://www.php.net/manual/en/features.commandline.options.php
  • https://www.php.net/manual/en/reserved.constants.php

使用php:

php  -r 'print preg_replace("/[^0-9]/", "", php_ini_loaded_file());'

输出:

74

最新更新