Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 17/08/2017, à 22:40

Hizoka

Re : [Résolu mais dangereux] Renvoyer un tableau depuis une commande

A la base le but c'est que cela fonctionne depuis un fichier externe et non depuis une fonction.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#27 Le 23/08/2017, à 19:09

LeoMajor

Re : [Résolu mais dangereux] Renvoyer un tableau depuis une commande

Je souhaiterai convertir cette fonction en une "vraie" commande.

salut,
il faut que tu l'écrives dans le ~/.bashrc.
mettre à jour

source ~/.bashrc

si tu l'écris ailleurs, il faut mettre à jour (sourcer automatiquement) via probablement des méthodes liées à inotify systemd.path. Dans ce cas, tu surveilles les évènements dans $HOME/.bashobj ( dans l'exemple ci-dessous)   

par exemple, à la fin de  ~/.bashrc

function OBJ.INIT() {
  name=$1
  local structure="$HOME/.bashobj/$name"
  cat << EOF > "$structure"
#!/bin/bash
function _$name.getname () {
 printf "%s\n" "$name"
 }

function _$name.set.fromfile () {
  local c
  sourcefile=\$1
  unset arr
  declare -Ag arr
  while read line; do ((c++)); arr[\$c]="\$line"; done < <(cat "\$sourcefile")
  strings "\$sourcefile" > "$HOME/.bashobj/$name.src" 
  count=\$c
  
 } 

function _$name.count () {
 printf "%d\n" "\$count" 
 }

function _$name.getarray () {
 local index=\$1
 printf "%s\n" "\${arr[\$index]}"
 }

function _$name.gerarray.serial() {
 echo -e "\${arr[@]}\n" 
 }

function _$name.getsourcefile () {
 printf "%s\n" "\$sourcefile"
 }

EOF

}

function OBJ.DELETE () {
 local obj=$1
 rm "$HOME/.bashobj/$obj"* && printf "%d\n" 1 || printf "%d\n" 0
 bash
 }


function OBJ.UPDATE () {
 local obj=$1
 source "$HOME/.bashobj/$obj" && printf "%d\n" 1 || printf "%d\n" 0
 }

export -f OBJ.UPDATE
export -f OBJ.DELETE
export -f OBJ.INIT 
toto@s:~$ OBJ.INIT cafe
toto@s:~$ OBJ.UPDATE cafe  
1
toto@s:~$ _cafe.    # touche tab auto-complétion
_cafe.count            _cafe.getarray         _cafe.getsourcefile    
_cafe.gerarray.serial  _cafe.getname          _cafe.set.fromfile  
toto@s:~$ _cafe.set.fromfile dkms.txt
toto@s:~$ _cafe.getname
cafe
toto@s:~$ _cafe.getarray 26
nvidia-375, 375.66, 4.4.0-78-generic, x86_64: installed
toto@s:~$ _cafe.count 
48
etc ...

Hors ligne

#28 Le 23/08/2017, à 22:01

Hizoka

Re : [Résolu mais dangereux] Renvoyer un tableau depuis une commande

bah c'est toujours des fonctions et non une commande qu'on appel comme grep ou sed ou je ne sais quelle autre.

De toute façon ce n'est pas possible, il faut renvoyer les valeurs et c'est à l'utilisateur de savoir les lire.


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#29 Le 23/08/2017, à 22:16

Watael

Re : [Résolu mais dangereux] Renvoyer un tableau depuis une commande

une fonction est appelée de la même manière qu'une commande dont le chemin est dans le PATH : par son nom,
et peut accepter des arguments.

quel comportement attends-tu d'une commande qu'une fonction n'offrirait pas ?

Dernière modification par Watael (Le 23/08/2017, à 22:17)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#30 Le 23/08/2017, à 23:03

Hizoka

Re : [Résolu mais dangereux] Renvoyer un tableau depuis une commande

Bah tout simplement de pouvoir la partager simplement, de pouvoir l'installer via un deb sans modifier le fichier bashrc de l'utilisateur...
Je ne souhaite pas que l'utilisateur ait besoin de sourcer un fichier pour l'utiliser, ça c'est ce que je peux faire pour moi.
Dans tous les cas, je me suis débrouillé autrement, je fais appel à mon script et retraite les données renvoyées.
Mais merci à tous smile


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne