shell脚本,用于安装软件包(如果尚未安装)

shell脚本,用于安装软件包(如果尚未安装),shell,package,Shell,Package,我已经做了一个C程序,但它取决于ncurses库。因此,当我将代码提供给其他人时,我必须要求他/她首先安装ncurses库,然后仅使用我提供的Makefile编译代码 但是,我想编写一个shell脚本,如果尚未安装,它将自动安装ncurses。这样我就可以让我的朋友来运行脚本了 这就是我希望脚本执行的操作:: if(ncurses-dev package not installed) sudo apt-get install ncurses-dev 我知道这是一个非常基本的问题,但我

我已经做了一个C程序,但它取决于ncurses库。因此,当我将代码提供给其他人时,我必须要求他/她首先安装ncurses库,然后仅使用我提供的Makefile编译代码

但是,我想编写一个shell脚本,如果尚未安装,它将自动安装
ncurses
。这样我就可以让我的朋友来运行脚本了

这就是我希望脚本执行的操作::

if(ncurses-dev package not installed)
     sudo apt-get install ncurses-dev

我知道这是一个非常基本的问题,但我不知道怎么做。我尝试了谷歌搜索,但找不到一个我能理解的简单教程。

关于fedora的教程

if ! rpm -qa | grep -qw $package_name$; then
    yum install $package_name
fi
#!/bin/sh

for package; do
    dpkg -s "$package" >/dev/null 2>&1 && {
        echo "$package is installed."
    } || {
        sudo apt-get install $package
    }
done
UBUNTU的

if ! rpm -qa | grep -qw $package_name$; then
    yum install $package_name
fi
#!/bin/sh

for package; do
    dpkg -s "$package" >/dev/null 2>&1 && {
        echo "$package is installed."
    } || {
        sudo apt-get install $package
    }
done

这也可用于检查多个软件包。

要在Debian(在您的Ubuntu中)上自动安装而无需用户交互,您可以在命令行args列表中使用--force yes--yes开关。像这样:


sudo apt get--force yes--yes安装包

@sps-您打算只在UBUNTU或任何linux发行版上运行此脚本。我的c程序适用于任何linux系统。。。。但现在我想至少让脚本为Debian(ubuntu)工作。。。我正在用我的手机写这个回复。。。我会在2-3小时后回到我的电脑,然后我可以尝试你建议的脚本。。感谢您的帮助,并且已经对您的答案进行了投票,但在我的pc上测试之前,我无法接受您的答案。是的,这适用于
ubuntu
。谢谢我没有
red-hat
linux来检查
yum
但是……对于Fedora/RedHat/CentOS/OracleLinux,直接查询包名比查询
grep
ping更有效
yum list installed package_name
rpm-q package_name
在安装包时都将以状态
0
退出,如果包丢失,则以非零状态退出。macOS如何?