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!
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.
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:
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).
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
Só uma dica:
Você não precisa usar o “&&” ao final de cada linha.
Usamos isto para liberar o terminal depois de executar um programa ou quando faremos duas execuções na mesma linha…
Para execuções linha a linha, é desnecessário usar.
Outra coisa que podes fazer para se livrar do “sudo” em todos os comandos do script, é simplesmente executar ‘sudo su’ no topo do script.
Fazendo isso, os próximos comandos não precisariam do ‘sudo’ antecedendo-os.
Também é possível checar se o usuário é root, antes da execução…
Tenho dois scripts em meu repositório do github, caso queira, podes observá-los e ver se tem algo que possa lhe ajudar.
comando &
# Deixa `comando` rodando no fundo e executa o resto do script ao mesmo tempo.
comando1 && comando2
# Executa `comando1` e, se nenhum erro for relatado pelo primeiro, o `comando2`
comando1 ; comando2
# Executa `comando1` e depois o `comando2`, simplesmente. Equivalente a separar o comando em linhas.
Na linha 37 para que você saiu do bash para usar o sh sendo que o bash também consegue fazer esta tarefa.
Isso só vai deixa a execução milésimos de segundos mais lento e polui o código.
Não e que não possa usar só que não é uma boa pratica.
Você também esta usando -yy use -y esse segundo y esta fazendo nada só atrapalhando a leitura.
O seu código esta bem comentadinho eu gostei… pena que eu tenho dificuldade com o inglês.
O && é para checar se a condicional é verdadeira e caso seja verdadeira a execução continua caso seja falsa a execução para.
Você pode verificar isso usando este comando no terminal: