#1 Le 16/11/2017, à 20:50
- AGP-Architecture
[RESOLU] script : ne pas afficher resultat d'une commande
Bonsoir à tous,
apprenant le bash, j'ai fais le petit script suivant :
#! /bin/bash
if [ $# -eq 0 ]; then
exit 0;
fi
i=0
declare -a MISSINGPAQUETS
for param in $@
do
which $param # comment faire pour ne pas afficher le resultat de la commande
if [ "$?" != "0" ]
then
MISSINGPAQUETS[$i]=$param
i=$i+1;
echo "fichier manquant : $param \n"
fi
done
if [ $i != "0" ]
then
echo "paquets manquants : ${#MISSINGPAQUETS[*]} \n"
echo "Paquets : $MISSINGPAQUETS[@]" # ne fonctionne pas
fi
echo "terminé"
Et j'ai deux petits problème :
1. La commande which affiche l'emplacement dans la console alors que je souhaiterais ne pas l'afficher. Existe-t-il un paramètre pour ne pas afficher le resultat mais le mettre uniquement en memoire et pouvoir l'appeler par $?
2. Comme faut-il faire pour afficher tous les éléments d'un tableau sur une seule ligne?
Merci
Dernière modification par AGP-Architecture (Le 17/11/2017, à 21:35)
Hors ligne
#2 Le 16/11/2017, à 21:04
- pingouinux
Re : [RESOLU] script : ne pas afficher resultat d'une commande
Bonsoir,
Essaye ceci :
.......................................
for param in "$@"
do
if ! which "$param" >/dev/null
then
MISSINGPAQUETS[$((i++))]="$param"
echo "fichier manquant : $param \n"
fi
done
if [ $i != "0" ]
then
echo "paquets manquants : ${#MISSINGPAQUETS[*]} \n"
echo "Paquets : ${MISSINGPAQUETS[@]}"
fi
.......................................
Hors ligne
#3 Le 16/11/2017, à 21:22
- AGP-Architecture
Re : [RESOLU] script : ne pas afficher resultat d'une commande
merci pingouinux
Ca marche parfaitement mais j'ai quelques questions sur ton code:
1. Quelle différence y a-t-il entre : for param in "$@" et for param in $@ pourquoi mettre des "" pour une variable
2.
${#MISSINGPAQUETS[*]}
quant doit-on mettre de accolades
3. if ! which "$param" >/dev/null : comment se fait-il qu'il n'y a pas de crochets [ ] pour la condition if ?
4. que signifie >/dev/null
Programmant en C# et php, il me semble que bash est un peu "barbare" au niveau de l'écriture ou c'est juste un sentiment parce que je commence?
Hors ligne
#4 Le 17/11/2017, à 07:15
- pingouinux
Re : [RESOLU] script : ne pas afficher resultat d'une commande
La première forme traitera correctement les paramètres contenant des espaces
Voir man bash, rubrique Parameter Expansion
if commande est vrai si le code de retour de la commande est 0, faux sinon
/dev/null est un fichier fictif (poubelle en sortie, vide en entrée)
Hors ligne