Erro ao baixar programas via Shell Script pelo terminal no Ubuntu

Olá!

Gostaria de uma pequena grande ajuda referente a uma parte do código do meu Script de Pós Instalação Pessoal do Ubuntu.

Nota: Não sei Shell Script. Sou apenas um entusiasta de Linux que está aprendendo dia após dia como usar o sistema e suas facilidades.

Estou tentando fazer a automação de instalação de três programas: Amazon Corretto 11, GitHub Desktop - The Linux Fork e Brave Browser.

O erro é que simplesmente as linhas não são interpretadas/executadas. Como faço para que os programas se instalem da mesma maneira como se estivessem sendo baixados manualmente? Se houver outras sugestões, serão muito bem-vindas!

Segue o trecho do meu código:

## Adding Amazon Corretto 11
wget -O- https://apt.corretto.aws/corretto.key | sudo apt-key add - sudo add-apt-repository 'deb https://apt.corretto.aws stable main' -yy

## Adding GitHub Desktop - The Linux Fork
wget -qO - https://packagecloud.io/shiftkey/desktop/gpgkey | sudo tee /etc/apt/trusted.gpg.d/shiftkey-desktop.asc > /dev/null -yy

sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/shiftkey/desktop/any/ any main" > /etc/apt/sources.list.d/packagecloud-shiftky-desktop.list' -yy

## Adding Brave Browser
sudo apt install apt-transport-https curl gnupg -yy

curl -s https://brave-browser-apt-release.s3.brave.com/brave-core.asc | sudo apt-key --keyring /etc/apt/trusted.gpg.d/brave-browser-release.gpg add - -yy

echo "deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list -yy

### System Update
sudo apt update -qq &&

#### Installing the Programs
sudo apt install -yy java-common java-11-amazon-corretto-jdk github-desktop brave-browser

Observação: Este trecho do código já consta o !#/bin/bash. Assim como a permissão para o arquivo .sh rodar como programa também já foi concedida. O arquivo é executado corretamente, mas quando chega na parte do código acima, ocorre um erro. Mais informações, acesse o meu repositório clicando aqui.

Espero que possam me ajudar.

Grato desde já!

Não manjo de shell script, mas deu pra perceber algumas coisas lendo os scripts que já rodei. Geralmente eles começam uma linha fazendo referência ao bash:

#!/bin/sh

ou

#!/bin/bash

Coloca no topo do arquivo.

1 Curtida

Como o @Francehelder , vc precisa da Shebang, coloque na primeira linha:

#!/usr/bin/env bash
1 Curtida

Vou pesquisar sobre isso. Obrigado.

Bota:
#!/bin/bash e dá permissão de execução para o teu script com: chmod 755 nome_do_script.sh

Olá!

Como já mencionei, este é um trecho do código. A referência que você comentou, já está em meu código-fonte.

Olá!

Tais declarações já estão postas no meu código-fonte. Bem como também já dei permissão (chmod 755) ao arquivo .sh para rodar em minha máquina.

Minha dúvida é somente em relação à semântica do código em si.

Olá!

Respondi a esse(a) mesmo(a) comentário/resposta nessa discussão.

Obrigado mesmo assim!

Vai ser preciso mais informação, como por exemplo onde esse script é chamado e como ele se comporta se chamado manualmente, que saída retorna no terminal (uso fedora e não estou com tempo para criar um ambiente para testar o seu código).

Qual o erro?

dando uma olhada mais cuidadosa, tenho quase certeza que o problema está em usar wget e apt-key antes de instalar o mesmo e o gnupg. Mais tarde vou fazer um container e ver.

Recomendo fazer um apt update e instalar todas as dependências básicas antes de continuar o script.

./test.sh: 1: !#/bin/bash: not found
--2020-11-18 12:31:15--  https://apt.corretto.aws/corretto.key
Resolving apt.corretto.aws (apt.corretto.aws)... 13.227.108.5, 13.227.108.51, 13.227.108.37, ...
Connecting to apt.corretto.aws (apt.corretto.aws)|13.227.108.5|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1695 (1,7K) [binary/octet-stream]
Saving to: ‘STDOUT’

-                                         100%[===================================================================================>]   1,66K  --.-KB/s    in 0s      

2020-11-18 12:31:16 (149 MB/s) - written to stdout [1695/1695]

gpg: can't open 'sudo': No such file or directory
gpg: can't open 'add-apt-repository': No such file or directory
gpg: can't open 'deb https://apt.corretto.aws stable main': No such file or directory
gpg: can't open '-yy': No such file or directory
tee: invalid option -- 'y'
Try 'tee --help' for more information.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
gnupg is already the newest version (2.2.19-3ubuntu2).
gnupg set to manually installed.
The following NEW packages will be installed:
  apt-transport-https curl libcurl4
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Need to get 396 kB of archives.
After this operation, 1.275 kB of additional disk space will be used.
Get:1 http://br.archive.ubuntu.com/ubuntu focal-updates/universe amd64 apt-transport-https all 2.0.2ubuntu0.1 [1.708 B]
Get:2 http://br.archive.ubuntu.com/ubuntu focal-updates/main amd64 libcurl4 amd64 7.68.0-1ubuntu2.2 [233 kB]
Get:3 http://br.archive.ubuntu.com/ubuntu focal-updates/main amd64 curl amd64 7.68.0-1ubuntu2.2 [161 kB]
Fetched 396 kB in 1s (605 kB/s)   
Selecting previously unselected package apt-transport-https.
(Reading database ... 155418 files and directories currently installed.)
Preparing to unpack .../apt-transport-https_2.0.2ubuntu0.1_all.deb ...
Unpacking apt-transport-https (2.0.2ubuntu0.1) ...
Selecting previously unselected package libcurl4:amd64.
Preparing to unpack .../libcurl4_7.68.0-1ubuntu2.2_amd64.deb ...
Unpacking libcurl4:amd64 (7.68.0-1ubuntu2.2) ...
Selecting previously unselected package curl.
Preparing to unpack .../curl_7.68.0-1ubuntu2.2_amd64.deb ...
Unpacking curl (7.68.0-1ubuntu2.2) ...
Setting up apt-transport-https (2.0.2ubuntu0.1) ...
Setting up libcurl4:amd64 (7.68.0-1ubuntu2.2) ...
Setting up curl (7.68.0-1ubuntu2.2) ...
Processing triggers for man-db (2.9.1-1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
gpg: can't open '-yy': No such file or directory
tee: invalid option -- 'y'
Try 'tee --help' for more information.
All packages are up to date.
W: Failed to fetch https://packagecloud.io/shiftkey/desktop/any/dists/any/InRelease  429  Too Many Requests [IP: 54.183.38.243 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package java-11-amazon-corretto-jdk
E: Unable to locate package github-desktop
E: Unable to locate package brave-browser
./test.sh: 20: Syntax error: Unterminated quoted string

Faltou separar essas duas linhas. Daí o apt-key acha que sudo add-apt-repository [...] são chaves/assinaturas digitais para adicionar.

Mesmo problema na linha relativa ao Brave (que começa com curl).

O tee não precisa de -yy (inclusive dá erro porque ele não sabe o que fazer). Só tirar, ele faz/sobrescreve sem problema.

essa linha está invertida ficaria assim => ( #!/bin/bash )

1 Curtida