A voir également:
- Bash Les fonctions et les variables
- Fonction si et - Guide
- Ces codes secrets vous donnent accès aux fonctions cachées de votre smartphone Android - Accueil - Android
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Bingo bash free - Télécharger - Divers Jeux
- Impossible d'installer hyper-v le processeur ne dispose pas des fonctions de virtualisation requises ✓ - Forum Hyper-V
9 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
26 juil. 2012 à 18:58
26 juil. 2012 à 18:58
Salut,
1/ Comment fait on pour afficher deux fonctions sur la même ligne.
2/comment fait on pour mettre en variable le résultat d'une fonction.
1/ Comment fait on pour afficher deux fonctions sur la même ligne.
sql5; sql2
2/comment fait on pour mettre en variable le résultat d'une fonction.
execution2="$(sql5)" execution3="$(sql2)"
Bonjour,
merci de votre réponse.
Pour la question 1: quand je fait
il s'affiche dans le terminal
Alors qu'il les faut sur la même ligne comme ceci
Pour la question 2 : ca marche
Terminal
La lecture du son est effectué comme ceci
Merci.
merci de votre réponse.
Pour la question 1: quand je fait
sql5; sql2
il s'affiche dans le terminal
aplay /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
Alors qu'il les faut sur la même ligne comme ceci
aplay /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wavsinon le programme ne s'execute pas pour la lecture du son.
Pour la question 2 : ca marche
execution2="$(sql5)" execution3="$(sql2)" $execution2 $execution3
Terminal
Playing WAVE '/home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav' : Signed 16 bit Little Endian, Rate 16000 Hz, Mono serveur@debian:~$
La lecture du son est effectué comme ceci
aplay /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
26 juil. 2012 à 19:24
26 juil. 2012 à 19:24
Attend.... tu veux dire que le résultat de ta fonction "sql15" c'est la commande "aplay" ?
Dans ton exemple la fonction sql15 est la même que "sql12", non ?
Dans ton exemple la fonction sql15 est la même que "sql12", non ?
Bonjour,
Non,
sql15 ---> aplay
sql12 ---> /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
mais quand je fait
Le terminal ne comprend pas, il affiche
Alors qu'il les faut sur la même ligne comme ceci
Merci.
Non,
sql15 ---> aplay
sql12 ---> /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
mais quand je fait
sql5; sql2
Le terminal ne comprend pas, il affiche
aplay /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
Alors qu'il les faut sur la même ligne comme ceci
aplay /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
26 juil. 2012 à 19:36
26 juil. 2012 à 19:36
A quoi ressemble ta fonction sql15 ?
Il faut lui donner un paramètre si tu veux que ça marche :
Il faut lui donner un paramètre si tu veux que ça marche :
sql15(){ aplay $1 } sql5 sql2
Flachy Joe
Messages postés
2103
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
21 novembre 2023
260
Modifié par Flachy Joe le 26/07/2012 à 20:06
Modifié par Flachy Joe le 26/07/2012 à 20:06
@zipe31 : je pense que le nom de la commande à lancer est contenu dans la base de donnée...
@xunil2003 : la syntaxe utilisée à l'origine devrait fonctionner, tu n'as pas un problème de guillemets ?
exemple/test :
Ça affiche bien blabla.
EDIT ah oui, tu le disait aussi en fait... C'est avec les fonctions que ça marche pas.
Je pense que tu n'as pas le choix et qu'il faut passer par des variables, car là sql2 est considéré comme un argument pour sql5.
@xunil2003 : la syntaxe utilisée à l'origine devrait fonctionner, tu n'as pas un problème de guillemets ?
exemple/test :
t1="echo" t2="blabla" $t1 $t2
Ça affiche bien blabla.
EDIT ah oui, tu le disait aussi en fait... C'est avec les fonctions que ça marche pas.
Je pense que tu n'as pas le choix et qu'il faut passer par des variables, car là sql2 est considéré comme un argument pour sql5.
Bonjour,
Les fonction ressemble à ceci :
sql5(){
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \
--default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
}
sql2(){
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \
--default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
}
Oui il affiche bien "blabla"
Merci.
Les fonction ressemble à ceci :
sql5(){
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \
--default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
}
sql2(){
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \
--default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'"
}
t1="echo" t2="blabla" $t1 $t2
Oui il affiche bien "blabla"
Merci.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
26 juil. 2012 à 20:20
26 juil. 2012 à 20:20
Essaies comme ça :
Puis :
sql5(){ $(mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'") } sql2(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'" }
Puis :
sql15 sql12
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Avec ceci
Avec ceci
sql5(){ $(mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'") } sql2(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'" } Puis : sql15 sql12
Le terminal bloc ^CAborted by signal Interrompre... serveur@debian:~$
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 419
26 juil. 2012 à 20:33
26 juil. 2012 à 20:33
Oups j'ai oublié le paramètre ;-(((
sql5(){ $(mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'") $1 } {
Utilisateur anonyme
26 juil. 2012 à 20:35
26 juil. 2012 à 20:35
salut,
mais t'as combien de commandes ?
t'es sûr qu'utiliser une base de données sql, plutôt que quelques fichiers plats, est une bonne idée ?
moi, ça me paraît lourd.
$(sql15) $(sql12)
mais t'as combien de commandes ?
t'es sûr qu'utiliser une base de données sql, plutôt que quelques fichiers plats, est une bonne idée ?
moi, ça me paraît lourd.
Bonjour,
Avec
c'est pareil le terminal bloc
Merci.
Avec
sql5(){ $(mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes5 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'") } sql2(){ $(mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2 FROM $nom_table WHERE $colonne_recherche LIKE '$recherche%'") }
c'est pareil le terminal bloc
^CAborted by signal Interrompre... serveur@debian:~$
Merci.
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
27 juil. 2012 à 08:14
27 juil. 2012 à 08:14
hello
$ sql5() { aplay $* ; } $ sql2() { echo "/home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav" ; } $ $ sql5 $(sql2) /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav: No such file or directory $
bonjour,
Ce n'est pas bon car l'utilisateur doit pouvoir choisir le lecteur audio (En fonction des Os aplay n'est pas disponible) qui veut utiliser.
Par contre j'ai trouvé une solution , je fait comme ceci.
Je ne sais pas si il est possible de faire une jointure des 3 tables afin de faire une seule fonction, afin de réduire les lignes de code ?
Pour le fichier log je demande si c'est pas mieux d'écrire dans une table mysql que dans un fichier txt, surtout pour l'affichage du rapport (fichier log) afin d'eviter le traitement ligne par ligne mot par mot pour les colonnes (mise en tableau d'un fichier txt) ?
Merci.
Table1 - bash
Table2 - config
Table3 - son
Table - log
Merci.
Ce n'est pas bon car l'utilisateur doit pouvoir choisir le lecteur audio (En fonction des Os aplay n'est pas disponible) qui veut utiliser.
$ sql5() { aplay $* ; } $ sql2() { echo "/home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav" ; } $ $ sql5 $(sql2) /home/serveur/Domotique/x10/son-confirmation/wav/appel-urgence-on.wav: No such file or directory $
Par contre j'ai trouvé une solution , je fait comme ceci.
Je ne sais pas si il est possible de faire une jointure des 3 tables afin de faire une seule fonction, afin de réduire les lignes de code ?
Pour le fichier log je demande si c'est pas mieux d'écrire dans une table mysql que dans un fichier txt, surtout pour l'affichage du rapport (fichier log) afin d'eviter le traitement ligne par ligne mot par mot pour les colonnes (mise en tableau d'un fichier txt) ?
Merci.
#!/bin/bash hote_db="localhost" nom_bd="domotique" login_db="xxxx" pass_bd="xxxxxx" #----------------- TABLE1 BASH ----------------- format_texte="utf8" #select_noms_colonnes="id,cmu,ordre_on,fichier_on,macro_on,ordre_off,fichier_off,macro_off,ordre_dim,fichier_dim,macro_dim,ordre_bri,fichier_bri,macro_bri" nom_table1="bash" colonne_recherche1="cmu" #select_noms_colonnes1="prog" select_noms_colonnes1_1="ordre_on" select_noms_colonnes1_2="fichier_on" select_noms_colonnes1_3="macro_on" recherche1="A4" sql1(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes1_1 FROM $nom_table1 WHERE $colonne_recherche1 LIKE '$recherche1%'" } sql2(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE $colonne_recherche1 LIKE '$recherche1%'" } sql3(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes1_3 FROM $nom_table1 WHERE $colonne_recherche1 LIKE '$recherche1%'" } #--------------- TABLE2 CONFIG ---------------- format_texte="utf8" #select_noms_colonnes="id,lecteur_audio, chemin_audio_bash, chemin_audio_web" nom_table2="config" colonne_recherche2="id" recherche2="0" select_noms_colonnes2_1="lecteur_audio" select_noms_colonnes2_2="chemin_audio_bash" sql4(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2_1 FROM $nom_table2 WHERE $colonne_recherche2 LIKE '$recherche2%'" } sql5(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes2_2 FROM $nom_table2 WHERE $colonne_recherche2 LIKE '$recherche2%'" } #--------------- TABLE3 SON ---------------- format_texte="utf8" #select_noms_colonnes="id, cmu, son_on, son_off, son_dim, son_bri" nom_table3="son" colonne_recherche3="cmu" recherche3="A4" select_noms_colonnes3_1="son_on" select_noms_colonnes3_2="son_off" select_noms_colonnes3_3="son_dim" select_noms_colonnes3_4="son_bri" sql6(){ mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \ --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes3_1 FROM $nom_table3 WHERE $colonne_recherche3 LIKE '$recherche3%'" } case "$PROGRAMME" in Asterisk) programme="Asterisk" ;; Crontab) programme="Crontab" ;; php) programme="PHP" ;; "") programme="Script bash" ;; esac utilisateur=$(whoami) date1=$(date +'%Y-%m') # date fr mois annee pour création du fichier log date2=$(date +'%d/%m/%Y') # date fr jour mois annee heure=$(date +%H:%M:%S) # heure Fr H M S #date3=$(date + '%d-%m-%Y - %H:%M:%S') # date et heure Fr jour mois annee - H M S ordre_domotique="$(sql1)" fichier="$(sql2)" macro="$(sql3)" lecteur="$(sql4)" chemin_audio_bash="$(sql5)" nom_fichier_audio="$(sql6)" #----- Execute l'ordre domotique ------ $ordre_domotique #----- Ecriture dans le fichier log ------ echo "$date2 - $heure - $utilisateur - $ordre_domotique - $fichier - $macro - $programme" >> /home/serveur/Domotique/rapports/ordres/$date1-rapport-ordres.log #----- Execute le son de confirmation de l'ordre domotique ------ $lecteur $chemin_audio_bash$nom_fichier_audio
Table1 - bash
id cmu ordre_on fichier_on macro_on ordre_off fichier_off macro_off ordre_dim fichier_dim macro_dim ordre_bri fichier_bri macro_bri
Table2 - config
id lecteur_audio chemin_audio_bash chemin_audio_web
Table3 - son
id cmu son_on son_off son_dim son_bri
Table - log
id date heure user ordre_x10 fichier macro execute_par 0 27-07-2012 00:39:27 serveur cm15 A4 On a4-on aucun macro Asterisk 1 27-07-2012 00:40:51 root cm15 A4 On a4-on aucun macro script bash
Merci.