Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 25

#0 Re : -1 »  stocker le résultat d'une commande dans un tableau en shell » Le 20/05/2015, à 17:20

Watael
Réponses : 39

salut,

ce "stockage" d'une commande dans une variable n'a aucun intérêt !
de plus, il est plutôt conseillé, lorsqu'une même commande doit être exécutée, d'utiliser une fonction.
ici (je le dis encore) ça n'a aucun intérêt : utilise simplement la commande.

#1 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 13:41

Watael
Réponses : 13

salut,

cerulean a écrit :

comment peut-on avoir la liste de toutes les notes si on les "shift" ?

soit, dans la première boucle, tu utilises un tableau :

notes+=( $note )

et alors, la boucle suivante sera une boucle for,
soit :

set -- $@ $note

#2 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 14:33

Watael
Réponses : 13

ma deuxième proposition est à insérer aussi dans la première boucle (il faut donc retirer l'instruction set qui la suit).
--         Évite de prendre les éventuels paramètres qui comenceraient par - pour des options de set.
$@      Se développe en l'ensemble des paramètres positionnels.

donc, on inscrit l'ensemble des paramètres positionnels et $note en tant que paramètres positionnels

#3 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 15:53

Watael
Réponses : 13

on y verra plus clair avec la nouvelle version du script. wink

#4 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 16:17

Watael
Réponses : 13

$min=$1

min=$1

pareil pour max !

#5 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 16:52

Watael
Réponses : 13

oui, parce que ce n'est pas $note qui contient l'ensemble des notes, c'est $@.
sauf que cela a été "mangé" par les shift sad

remplace le dernier while par

for note do test $note -lt $min && min=$note; test $note -gt $max && max=$note; done
echo liste = $@
echo max = $max
echo min = $min

#6 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 17:33

Watael
Réponses : 13
watael a écrit :

oui, parce que ce n'est pas $note qui contient l'ensemble des notes, c'est $@.
sauf que cela* a été "mangé" par les shift sad

* $@

#7 Re : -1 »  [ RESOLU ] commandes "while" "continue" et "shift" » Le 17/05/2015, à 18:46

Watael
Réponses : 13

Y-a-t'il des cas où la strucuture "if ... fi" ne peut être remplacée par "test .. && ... et/ou/puis ... || ... "  ?

des conditions simples, avec des commandes qui ne peuvent pas échouer, car les conditions sont exécutées séquentiellement (l'une après l'autre)
c'est pourquoi le résultat de cette commande est vrai :

$ true && false || true
$ echo $?
0

parce que le dernier true est exécuté, parce que la deuxième commande est fausse.
hmm

#8 Re : -1 »  [Shell] IFS contenant un pattern » Le 06/05/2015, à 23:47

Watael
Réponses : 1

salut,

l'IFS ne contient pas un "pattern", mais une liste de caractères.

remplace "-SEP-" par "|", et adapte la variable IFS environnementale de read :

$ printf -v mon_test "un-SEP-deux-SEP-trois-SEP-quatre"
$ IFS='|' read chiffre1 chiffre2 chiffre3 chiffre4 <<< ${mon_test//-SEP-/|}
$ echo $chiffre2
deux

#9 Re : -1 »  [Résolu] Effacer les commandes dans le fichier bash history » Le 19/04/2015, à 22:42

Watael
Réponses : 12

salut,

c'est la commande history, qui va se charger de ça.
regarde help history.
les commandes tapées dans le terminal sont inscrites dans le fichier ~/.bash_history au moment de la fermeture du terminal.

#11 Re : -1 »  [résolu] Nettoyer cache firefox/chromium en ligne de commande » Le 13/04/2015, à 13:53

Watael
Réponses : 6

-c n'est pas une option sudo valide sad

sudo -su $swUser <<<'echo "$HOME"'

ou

sudo -u $swUser sh -c 'echo "$HOME"'

ici, -c est une option de sh. wink

#12 Re : -1 »  [résolu] Remplacer du texte dans plusieurs fichiers » Le 05/04/2015, à 20:24

Watael
Réponses : 3

salut,

si tu as de nombreuses modifications à réaliser, écrit les dans un script sed (eh, oui, comme le shell, awk, perl, python... sed aussi est "scriptable") !
et continue d'utiliser find -exec \;, ça reste la méthode la plus sûre.

#13 Re : -1 »  Script : If avec plusieurs éléments [RESOLU] » Le 26/03/2015, à 16:16

Watael
Réponses : 24

salut,

sachant que la syntaxe, c'est

if command; then ...fi

ou command peut être test, ou une autre commande;.
le test est superfétatoire.

donc,

if ping -c3 -t3 $machine >/dev/null 2>&1; then : ...; else : ...; fi

#14 Re : -1 »  [résolu]Script extinction écran » Le 29/03/2015, à 12:31

Watael
Réponses : 15

salut,

elle sert surtout à rien cette suite de if !

#!/bin/bash
duree=(10 60 120 300 600)
pwrMgmt() { dconf write /org/mate/power-manager/sleep-display-$1 $2;}
choix=$(zenity --list --radiolist \
	--title "Extinction de l'écran" --text "Durée avant extinction de l'écran" \
	--height "210"\
	--column="Choix" --column="Durée" --column="Temps"\
	--hide-column="2" --print-column="2" --hide-header\
		true "${duree[0]}" "10 secondes"\
		false "${duree[1]}" "1 minute"\
		false "${duree[2]}" "2 minutes"\
		false "${duree[3]}" "5 minutes"\
		false "${duree[4]}" "10 minutes");
(($?)) && exit 1 || { pwrMgmt ac $choix && pwrMgmt battery $choix;}

utiliser une variable ou un tableau pour stocker une commande est également une mauvaise idée.
je les ai remplacées par une seule fonction qui prend deux arguments.

#15 Re : -1 »  [résolu]Script extinction écran » Le 29/03/2015, à 13:50

Watael
Réponses : 15

non !

case $var in
cas1) cmd1;;
cas2) cmd2;;
*) cmd_autreCas;;
esac

#16 Re : -1 »  [résolu]Script extinction écran » Le 29/03/2015, à 18:46

Watael
Réponses : 15

toi, tu as fait:

case $var in
cas1) comd1;;
esac
case $var in
cas2) comd2;;
esac
case $var in
*) comd_autrecas;;
esac

alors que la forme correcte d'un case/esac est celle que j'ai montrée dans mon message précédent.

#17 Re : -1 »  Lancer un script au bash au démarrage du PC automatiquement » Le 24/03/2015, à 17:14

Watael
Réponses : 9

salut,

si tu n'as qu'un répertoire à créer au démarrage, autant mettre la commande dans /etc/rc.local; avant le exit 0 qui doit impérativement rester la dernière commande.

#18 Re : -1 »  Coup de pouce pour mon crontab [résolu] » Le 24/03/2015, à 15:41

Watael
Réponses : 13

salut,

les crontab utilisateurs ne comportent pas le nom de l'utilisateur.

et vérifie que le chemin de chaque exécutable appelé dans le script est dans le PATH de cron.

quel intérêt d'utiliser script dans le script ?

#19 Re : -1 »  Coup de pouce pour mon crontab [résolu] » Le 24/03/2015, à 16:29

Watael
Réponses : 13

je doute que webcam soit sous ton $HOME.

pi  /usr/bin/webcam

ceci indique que cron tente d'exécuter pi avec /usr/bin/webcam en argument, mais pi n'est pas une commande !

il nous faut la ligne cron exécutée, et les lignes du log qui rapportent le comportement de cette ligne.

#20 Re : -1 »  Coup de pouce pour mon crontab [résolu] » Le 24/03/2015, à 16:48

Watael
Réponses : 13

si je comprends bien la page man (sur internet, car ce programme n'est pas installé sur ma machine) du programme, la ligne cron devrait être, pour faire un test toutes les minutes :

* *    * * * /<cheminAbsoluVers>/webcam /home/<tonUser>/.webcamrc

je ne vois, par ailleurs, pas d'option -c dans cette même page man. hmm

#21 Re : -1 »  [RESOLU] Lister un répertoire » Le 21/03/2015, à 18:22

Watael
Réponses : 10

salut,

dans

ls $dir/*

le shell développe l'astérisque avant d'exécuter la commande; c'est-à-dire qu'il "affiche" la liste des fichiers du répertoire indiqué, et la passe en arguments à la commande (ici `ls').
or, le shell, par défaut, n'affiche pas les fichiers cachés.
les options pour `ls' perdent alors tous leur sens.

#22 Re : -1 »  Passerelle téléphonique sous linux » Le 19/03/2015, à 01:05

Watael
Réponses : 10

salut,

Je dois modifier l'interface web d'une passerelle téléphonique installé sous linux.
Je doit donc supprimer un document pdf[...].

quel accès as-tu sur la machine ? direct ? ssh ? ftp ? ...?

par précaution, fais une sauvegarde du fichier avant sa suppression.

#23 Re : -1 »  Passerelle téléphonique sous linux » Le 19/03/2015, à 15:02

Watael
Réponses : 10

la racine d'un serveur web (/var/www/, par exemple) n'est pas la racine du système (/).

find / -type f -regex '.*/static/commun/doc/nom-fichier.pdf'

si c'est bon, ajoute l'action -delete à la commande ligne de commande.
si find retourne plus d'un fichier, il faudra passer par -exec rm -i {} \;, ce qui permettra de ne supprimer que celui qui convient.

#24 Re : -1 »  [Résolu] Utilisation de la casse dans les variables d'un script bash » Le 16/03/2015, à 00:28

Watael
Réponses : 4

salut,

nocaseglob fonctionne dans le Développement des chemins
fais plus simplement ainsi :

$ v="Bla bLa"
$ v="${v,,}"
test "$v" = "bla bla" && echo ok || echo ko                                        
ok 

ou utilise nocasematch avec un case wink; ce serait d'ailleurs mieux d'après ce que j'ai compris de tes intentions.