AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1499120
Accepted
Stormlord
Stormlord
Asked: 2024-01-06 02:32:23 +0800 CST2024-01-06 02:32:23 +0800 CST 2024-01-06 02:32:23 +0800 CST

Instalação de vários pacotes usando bash

  • 772

Como todos sabemos, o comando que usamos para instalar vários pacotes é:

apt install package1 package2 package3`

Usando o seguinte método em um script Bash:

packages="package1 package2 package3"
apt install "$packages"

produz um erro dizendo que o pacote não pode ser localizado. Portanto está incorreto.

O comando a seguir é executado aptuma vez para cada pacote ou funciona de maneira diferente?

apt install $(cat $packageFile)

assumindo que packageFile é um arquivo de texto contendo os nomes dos pacotes, um por linha.

Eu sei que posso usar um array e colocar todos os nomes de pacotes nele e então usar um loop forapt para rodar uma vez para cada pacote, mas estou me perguntando se existe uma maneira de instalar todos eles, usando um script Bash, rodando aptapenas uma vez.

Obrigado.

command-line
  • 1 1 respostas
  • 181 Views

1 respostas

  • Voted
  1. Best Answer
    Lorenz Keel
    2024-01-06T02:36:36+08:002024-01-06T02:36:36+08:00

    A abordagem de usar um array está correta, mas você precisa definir o array corretamente. Isso significa que você precisa usar uma instrução composta (ou seja, colchetes) em vez de aspas duplas. Na verdade, a razão pela qual seu comando não funciona em primeiro lugar é porque $packagesé expandido pelo shell para package1 package2 package3o qual é lido como uma única string por apt, e não separadamente como package1, package2, package3.

    Portanto, defina uma matriz usando uma atribuição composta na seguinte forma:

    packages=(package1 package2 package3)
    

    e instale todos os pacotes usando o seguinte comando:

    sudo apt install "${packages[@]}"
    

    Na verdade, qualquer elemento de um array pode ser referenciado usando ${array_name[index]}, e quando o índice é @, a palavra se expande para todos os membros do nome do array. O uso de chaves é necessário para evitar conflitos com os operadores de expansão de nome de arquivo do shell.

    • 6

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve