Eu gostaria de criar um script que adicione um novo PPA ou pule se já estiver instalado.
Alguém postou esta solução para uma pergunta diferente:
#!/bin/bash
add_ppa() {
for i in "$@"; do
grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1
if [ $? -ne 0 ]
then
echo "Adding ppa:$i"
sudo add-apt-repository -y ppa:$i
else
echo "ppa:$i already exists"
fi
done
}
shell script para adicionar condicionalmente repositório apt
No meu caso, gostaria de adicionar ppa:otto-kesselgulasch/gimp-edge
, mas não tenho certeza de onde devo adicionar isso no script.
Eu tentei, add_ppa(ppa:otto-kesselgulasch/gimp-edge)
mas continuo recebendo um erro dizendo ( ppa
é o nome do meu script):
ppa: 1: ppa: Syntax error: word unexpected (expecting ")")
Eu também tentei com um espaço entre ppa e sem o ()
ppa: 1: ppa: add_ppa: not found
ppa: 12: ppa: Syntax error: "}" unexpected
Alguém pode me dizer o que estou fazendo de errado, por favor?
Respostas:
Essa é uma função bash, e para passar argumentos para funções bash, você não precisa
()
. Além disso, a função adiciona oppa:
prefixo aos seus argumentos, portanto, isso faria:Além disso, a função suporta vários argumentos, para que você possa executá-la para vários PPAs:
Dado que você colocou a função em um script, você deve:
basta usar o conteúdo da função como o script:
E chame o script com o nome ppa:
fonte
in "$@"
;for i; do
loops sobre os parâmetros posicionais.Eu acho que você está executando o arquivo como um script, mas é apenas uma definição de função, portanto a função nunca é chamada quando é executada.
Você não precisa adicionar nada a ele; você não precisa adicionar o PPA em nenhum lugar dentro dele. Você pode
source
o arquivo e, em seguida, chamar a função no shell atual:(supondo que o arquivo em que você o salvou seja chamado
ppa
, esteja no diretório de trabalho atual e tenha exatamente o mesmo conteúdo do exemplo que você postou)Você também pode executá-lo como um script, se adicionar uma linha que realmente chama a função. Você pode codificar o PPA nele adicionando uma linha como esta no final:
e, em seguida, execute o script. Mas dessa forma, você teria que editar o arquivo toda vez que quisesse adicionar um novo PPA ...
Em vez disso, você pode chamar a função em todos os argumentos passados para o script adicionando uma linha como esta:
quando o script for chamado:
fonte
Parece que você pode ter digitado um erro de digitação no seu script, especificamente na definição da
add_ppa
função.A mensagem de erro:
Indica que add_ppa não está sendo reconhecido como uma função.
Parece que você pode ter usado
(
no lugar{
ao definir a função. Corrija esse erro e a função deve funcionar corretamente, embora deva ser usada conforme indicado na resposta do muru .fonte