Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将发行版信息从lsb_版本添加到脚本_Bash - Fatal编程技术网

Bash 将发行版信息从lsb_版本添加到脚本

Bash 将发行版信息从lsb_版本添加到脚本,bash,Bash,希望运行bash脚本,在新安装发行版后安装软件和repos。我有一个脚本将用于基于debian的发行版。要添加到脚本中,该脚本将从lsb_发行版获取发行版并启动正确的安装命令。lsb_发行版是正确的选择吗?我假设我可以grep发行版ID并使用它开始脚本的下一部分。我可能是从错误的方向来的。有什么建议吗?干杯 虽然您可以使用lsb_release-d提取当前安装的发行版的描述,但是lsb_release可能不会安装在某些非debian发行版中 相反,您可以在/etc中查找以-release结尾的文

希望运行bash脚本,在新安装发行版后安装软件和repos。我有一个脚本将用于基于debian的发行版。要添加到脚本中,该脚本将从lsb_发行版获取发行版并启动正确的安装命令。lsb_发行版是正确的选择吗?我假设我可以grep发行版ID并使用它开始脚本的下一部分。我可能是从错误的方向来的。有什么建议吗?干杯

虽然您可以使用
lsb_release-d
提取当前安装的发行版的描述,但是
lsb_release
可能不会安装在某些非debian发行版中

相反,您可以在
/etc
中查找以
-release
结尾的文件,该文件包含您的操作系统信息。例如,在我的Ubuntu 15.10中,我拥有以下内容:

alexander~$ cat /etc/*-release
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=15.10
DISTRIB_CODENAME=wily
DISTRIB_DESCRIPTION="Ubuntu 15.10"
NAME="Ubuntu"
VERSION="15.10 (Wily Werewolf)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 15.10"
VERSION_ID="15.10"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
请注意
ID
,它包含您当前的发行版,以及
ID\u LIKE
,它包含您的发行版所基于的发行版(在我的例子中,ubuntu是基于debian的)。从中,您可以通过如下方式通过灰色化提取ID和ID_LIKE的值:

cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"      # get ID value
cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+" # get ID_LIKE value
# If the -o option is not available for grep in your system, use awk instead
在脚本中,可以将变量初始化为上述语句,如:

current_distro=`cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"`
close_distro=`cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+"`

然后,您可以通过检查脚本中的
“$current\u distro”
“$close\u distro”
来确定适当的安装命令。

非常感谢。这很有帮助。身份证和身份证是更好的选择。不客气。正如他们所描述的,ID/ID_-LIKE更适合通过脚本处理或在生成的文件名中使用。