Je voudrais créer un script qui ajoutera un nouveau PPA ou sautera s'il est déjà installé.
Quelqu'un a posté cette solution à une autre question:
#!/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
}
script shell pour ajouter conditionnellement un référentiel apt
Dans mon cas, je voudrais ajouter ppa:otto-kesselgulasch/gimp-edge
, mais je ne sais pas où je suis censé ajouter cela dans le script.
J'ai essayé add_ppa(ppa:otto-kesselgulasch/gimp-edge)
mais je reçois toujours une erreur disant ( ppa
est le nom de mon script):
ppa: 1: ppa: Syntax error: word unexpected (expecting ")")
J'ai aussi essayé avec un espace entre ppa et sans le ()
ppa: 1: ppa: add_ppa: not found
ppa: 12: ppa: Syntax error: "}" unexpected
Quelqu'un peut-il me dire ce que je fais mal s'il vous plaît?
Réponses:
C'est une fonction bash, et pour passer des arguments aux fonctions bash, vous n'avez pas besoin
()
. De plus, la fonction ajoute leppa:
préfixe à ses arguments, donc cela suffirait:En outre, la fonction prend en charge plusieurs arguments, vous pouvez donc l'exécuter pour plusieurs PPA:
Étant donné que vous avez placé la fonction dans un script, vous devez soit:
utilisez simplement le contenu de la fonction comme script:
Et appelez le script avec le nom ppa:
la source
in "$@"
;for i; do
boucle sur les paramètres de position.Je pense que vous exécutez le fichier en tant que script, mais ce n'est qu'une définition de fonction, de sorte que la fonction n'est jamais appelée lorsqu'elle est exécutée.
Vous n'avez pas besoin d'y ajouter quoi que ce soit; vous n'avez pas besoin d'ajouter le PPA n'importe où à l'intérieur. Vous pouvez
source
le fichier puis appeler la fonction dans le shell actuel:(en supposant que le fichier dans lequel vous l'avez enregistré est appelé
ppa
, se trouve dans le répertoire de travail actuel et a exactement le même contenu que l'exemple que vous avez publié)Vous pouvez également l'exécuter en tant que script si vous ajoutez une ligne qui appelle réellement la fonction. Vous pouvez coder en dur le PPA en y ajoutant une ligne comme celle-ci à la fin:
puis exécutez le script. Mais de cette façon, vous devrez modifier le fichier chaque fois que vous souhaitez ajouter un nouveau PPA ...
Au lieu de cela, vous pouvez appeler la fonction sur tous les arguments passés au script en ajoutant une ligne comme celle-ci:
puis quand le script est appelé:
la source
Il semble que vous ayez fait une faute de frappe dans votre script, en particulier à la définition de la
add_ppa
fonction.Le message d'erreur:
Indique que add_ppa n'est pas reconnu en tant que fonction.
Il semble que vous ayez utilisé
(
à la place de{
lors de la définition de la fonction. Corrigez cette erreur et la fonction devrait fonctionner correctement, bien qu'elle doive être utilisée comme indiqué dans la réponse de muru .la source