[script bash] : script redirection ecran&fichier
Résolu
Bonjour,
au depart, j'ai ceci dans le code
ça marche, mais ça ne me convient pas tout à fait
après, j'ai modifié pour ceci, (affichage et redirection dans un fichier en meme temps)
c'est mieux, mais je me demande s'il est possible d'obtenir quelque chose qui me convient plus
Je me demande s'il est possible de faire quelque chose comme ceci.
mais je ne connais ^pas le code qu'il me faudrait
si vous avez une idée
Merci
PS : j'ai fait exprès de mettre beaucoup d'espace dans l'argument de 'echo', car je voulais que le resultat dans le fichier/ecran ne soit pas déformé
au depart, j'ai ceci dans le code
echo "test de l'avion" "pas possible" "oui" >>tmp1
echo "marchande de tapis" "degel" >>tmp2
echo -e "033[01mtest"
ça marche, mais ça ne me convient pas tout à fait
après, j'ai modifié pour ceci, (affichage et redirection dans un fichier en meme temps)
echo "test de l'avion" "pas possible" "oui" | tee -a tmp1
echo "marchande de tapis" "degel" | tee -a tmp2
echo -e "033[01mtest"
c'est mieux, mais je me demande s'il est possible d'obtenir quelque chose qui me convient plus
Je me demande s'il est possible de faire quelque chose comme ceci.
mais je ne connais ^pas le code qu'il me faudrait
redir_screen_file(){
???????
}
redir_screen_file "test de l'avion" "pas possible" "oui" ">>tmp1"
redir_screen_file "marchande de tapis" "degel" ">>tmp2"
redir_screen_file "033[01mtest"
si vous avez une idée
Merci
PS : j'ai fait exprès de mettre beaucoup d'espace dans l'argument de 'echo', car je voulais que le resultat dans le fichier/ecran ne soit pas déformé
Configuration: Windows / Firefox 78.0
A voir également:
- [script bash] : script redirection ecran&fichier
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Bingo bash free - Télécharger - Divers Jeux
- Bash addition ✓ - Forum Shell
1 réponse
Bonjour,
Approche 1 : fonction à deux arguments
Pour moi, il faut garder ça simple : tu fais simplement une fonction avec deux arguments : le message et le fichier de log.
Comme tu peux le voir, on peut tout à fait injecter le contenu d'une variable dans la chaîne de message.
Approche 2 : fonction à nombre d'arguments variable
En bash, il existe une syntaxe pour extraire un ou plusieurs arguments passés à une fonction, comme expliqué dans ce lien.
Dans ton cas, ça donne :
(Note que l'interpréteur doit alors être
Bonne chance
Approche 1 : fonction à deux arguments
Pour moi, il faut garder ça simple : tu fais simplement une fonction avec deux arguments : le message et le fichier de log.
#!/bin/sh TMP1="$HOME/tmp1.log" TMP2="$HOME/tmp2.log" redir_screen_file(){ echo "$1" | tee -a "$2" } redir_screen_file "bonjour $TMP1 ! :)" $TMP1 redir_screen_file "hello! $TMP2 :)" $TMP2 exit 0
(mando@aldur) (~) $ chmod a+x script.sh
(mando@aldur) (~) $ ./script.sh
bonjour /home/mando/tmp1.log ! :)
hello! /home/mando/tmp2.log :)
(mando@aldur) (~) $ head tmp*log
==> tmp1.log <==
bonjour /home/mando/tmp1.log ! :)
==> tmp2.log <==
hello! /home/mando/tmp2.log :)
Comme tu peux le voir, on peut tout à fait injecter le contenu d'une variable dans la chaîne de message.
Approche 2 : fonction à nombre d'arguments variable
En bash, il existe une syntaxe pour extraire un ou plusieurs arguments passés à une fonction, comme expliqué dans ce lien.
Dans ton cas, ça donne :
#!/bin/bash TMP1="$HOME/tmp1.log" TMP2="$HOME/tmp2.log" redir_screen_file(){ last="${@:$#}" other="${*%${!#}}" echo "$other" | tee -a "$last" } redir_screen_file "bonjour" ":)" $TMP1 redir_screen_file "hello!" ":)" $TMP2 exit 0
(Note que l'interpréteur doit alors être
/bin/bash). On obtient alors :
(mando@aldur) (~) $ rm tmp*log
(mando@aldur) (~) $ ./toto.sh
bonjour :)
hello! :)
(mando@aldur) (~) $ head tmp*log
==> tmp1.log <==
bonjour :)
==> tmp2.log <==
hello! :)
Bonne chance