J'ai un script qui génère dinamiquement un autre script bash. Dans ce script heredoc il y a une boucle infinie montrant un compteur (cela fonctionne!):Bash. boucle infinie montrant un compteur et plus d'info
date1=`date +%s`
while true; do
echo -ne "$(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
Cette boucle fonctionne bien si vous mettez seulement cela. Le problème est que je dois montrer non seulement le compteur. Plus d'informations sont nécessaires (certaines données statiques). Je vais mettre mon code de travail non:
#!/bin/bash
dir="/tmp/"
my_file="generatedscript.sh"
rm -rf "$dir$my_file" > /dev/null 2>&1
exec 3>"$dir$my_file"
cat >&3 <<-'EOF'
#!/bin/bash
date1=`date +%s`
while true; do
echo -ne "Info\n" # this is the damned line, if you remove it the counter works fine
echo -ne "Time counter: $(date -u --date @$((`date +%s` - $date1)) +%H:%M:%S)\r";
done
EOF
exec 3>&-
xterm -hold -geometry 78x25+0+0 -T "Testing" -e "bash \"$dir$my_file\"" > /dev/null 2>&1 &
Cela montre la fenêtre xterm avec beaucoup de lignes et la ligne Info est chevauchée avec le mot « temps » d'autre ligne. Je veux afficher la ligne Info séparément de la ligne du compteur de temps et le compteur en cours ... et une seule fois! Si vous supprimez la ligne echo -ne "Info \ n" Le compteur affiche ok, en cours d'exécution et une seule fois ... comment mettre une autre ligne différente (écho avec l'info) ci-dessus et comme une ligne fixe sans répétition? est possible? aucune idée de la façon d'atteindre cela? Je vous remercie.
Vous ne savez pas pourquoi vous décrivez ici le descripteur de fichier 3; 'cat>" $ dir/$ mon_fichier "<< 'EOF' ...' est beaucoup plus simple. – chepner
'echo -ne" INFO \ n "' n'est pas différent de 'echo INFO'. – chepner
oui, c'est pareil ... c'était parce que j'essayais différentes choses ... sans succès. Et le chat> "$ dir/$ mon_fichier" << 'EOF' est nécessaire pour générer un script séparé de ce script. Est nécessaire ... peut-être n'est pas pertinent pour la cible de la poste ... de toute façon, savez-vous comment faire face au problème? Merci pour votre réponse. – OscarAkaElvis