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.

#1 Le 24/05/2015, à 16:54

cerulean

[résolu] Question à 2 balles

Bonjour,
Quelqu'un sait-il à quoi cela correspond ??

BASH=/bin/bash
BASHOPTS=cmdhist:extquote:etc...
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=([0]="0")
BASH_SOURCE=([0]="./truc.sh")
BASH_VERSINFO=([0]="4" [1]="2" [2]="25" [3]="1" [4]="release" [5]="i686-pc-linux-gnu")
BASH_VERSION='4.2.25(1)-release'
COLORTERM=Terminal
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-3nKmfqPMJF,guid=9a759d413bdc0f5e00000048
DEFAULTS_PATH=/usr/share/gconf/gnome.default.path
DESKTOP_AUTOSTART_ID=108df735c621ba6662000020900001
DESKTOP_SESSION=gnome
DIRSTACK=()
DISPLAY=:0.0
EUID=1000
GDMSESSION=gnome
GNOME_DESKTOP_SESSION_ID=this-is-deprecated
GNOME_KEYRING_CONTROL=/home/dyt/.cache/keyring-YPkuc
GNOME_KEYRING_PID=2079
GPG_AGENT_INFO=/home/dyt/.cache/keyring-YPkuc/gpg:etc...
GROUPS=()
HOME=/home/dyt
HOSTNAME=ubuntu
HOSTTYPE=i686
IFS=/
LANG=fr_FR.UTF-8
LANGUAGE=fr:en_US:en
LC_ADDRESS=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LESSCLOSE='/usr/bin/lesspipe %s %s'
LESSOPEN='| /usr/bin/lesspipe %s'
LIBGL_DRIVERS_PATH=/usr/lib/fglrx/dri
LOGNAME=dyt
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:etc...
MACHTYPE=i686-pc-linux-gnu
MANDATORY_PATH=/usr/share/gconf/gnome.mandatory.path
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/home/dyt/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PIPESTATUS=([0]="0")
PPID=248
PS4='+ '
PWD=/home/dyt/exo
SESSION_MANAGER=local/ubuntu:@/tmp/.ICE-unix/2090,unix/ubuntu:etc...
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments
SHLVL=2
SSH_AGENT_PID=29
SSH_AUTH_SOCK=/home/dyt/.cache/keyring-KJPkuc/ssh
TERM=xterm
UBUNTU_MENUPROXY=libappmenu.so
UID=1000
USER=dyt
WINDOWID=4104
XAUTHORITY=/home/dyt/.Xauthority
XDG_CONFIG_DIRS=/etc/xdg/xdg-gnome:/etc/xdg
XDG_CURRENT_DESKTOP=GNOME
XDG_DATA_DIRS=/usr/share/gnome:/usr/local/share/:/usr/share/
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_SESSION_COOKIE=b591c46553ca400000b-143237.45151-510448
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session0
_=

J'ai ce retour à un champs vide dans un script, vous voyez ?

Merci de votre aide, de vos lumières et de votre indulgence

Dernière modification par cerulean (Le 24/05/2015, à 20:41)

Hors ligne

#2 Le 24/05/2015, à 17:15

pingouinux

Re : [résolu] Question à 2 balles

Bonjour,
Ça ressemble au résultat de la commande set. Ceci pourrait correspondre à ce genre de ligne dans ton script

set "$@"

avec un appel du script sans paramètres.

Hors ligne

#3 Le 24/05/2015, à 18:13

cerulean

Re : [résolu] Question à 2 balles

Effectivement, je pensais bien avoir déjà vu ça ... Merci à toi.
En fait j'ai ce retour quand je ne réponds pas à un read -p "..."
Voici le bout de code :

read -p "Date de naissance (jj/mm/aaaa) : " datenaissance # ici. J'ai pu le zapper avec while true; do read -p "Date de naissance (jj/mm/aaaa) : " datenaissance ; [ -z $datenaissance ] && break ; done # mais un autre pb se pose, le script passe direct à "vérif du jour" cf. ci-après, et donc je dois entrer 2 fois "date de naissance" donc ce while n'est pas la solution ... 
IFS=/
set $datenaissance
jour=$1
mois=$2
an=$3

# verif de l'année
{ [ $an -ge 1 ] 2> /dev/null ; }  # si je réponds faux bash indique l'erreur suivante : ligne 40 : [: trop d'arguments. Pour éviter le msg d'erreur, je redirige les erreurs dans le puit, le tout à l'intérieur d'un regroupement de cmd. Il y a surement mieux ...
while [ $? != 0 ] 
do
 read -p "Saisissez l'année de votre naissance : " an
{ [ $an -ge 1 ] 2>/dev/null ; }
done
# verif du mois
{ [ $mois -ge 1 -a $mois -le 12 ] 2> /dev/null ; }
while [ $? != 0 ]
do 
 read -p "Saisissez un mois compris entre  1 et 12 : " mois
{ [ $mois -ge 1 -a $mois -le 12 ] 2> /dev/null ; }
done

# verif du jour
read -p "Entrez le jour de votre naissance : " jour
case $mois in                               # n'oublies pas  ;;  à la fin de chaque cas
 1|01|3|03|5|05|7|07|8|08|10|12 )
  nbjours=31
  [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; } 
  while [ $? != 0 ]
  do
   echo -n "Jour de naissance. Saisir un nombre entre 1 et $nbjours : "
   read jour
   [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; }
  done
 ;;
 02|2 )
  annee=$(( $an % 4 ))         # vérif. des années bissextiles
  if [ $annee -eq 0 ] ; then  
   nbjours=29
  else
   nbjours=28
  fi
  [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; } 
  while [ $? != 0 ]
  do
   read -p "Il y avait $nbjours jours en Février $an. Saisissez le jour de votre naissance : " jour
  [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; }
  done
 ;;
04|4|06|6|09|9|11 ) 
  nbjours=30
  [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; }
  while [ $? != 0 ] 
  do 
   read -p "Saisir un nombre entre 1 et $nbjours : " jour
   [ $jour -ge 1 -a $jour -le $nbjours ] 2>/dev/null # ; }
  done
 ;;
esac
datenaissance="$jour/$mois/$an"

Hors ligne

#4 Le 24/05/2015, à 18:36

pingouinux

Re : [résolu] Question à 2 balles

Il faut que tu fasses

set -- $datenaissance

Hors ligne

#5 Le 24/05/2015, à 19:20

cerulean

Re : [résolu] Question à 2 balles

En effet.
Je te remercie de ton aide.
Aussi, j'ai un autre pb ... comment je peux faire pour que le script reprenne après la fin du case ?
Si je rentre  datenaissance  dans le format demandé, le script reprend à "# vérif du jour" ... donc au début du  case ...

Date de naissance (jj/mm/aaaa) : 01/01/1970
Entrez le jour de votre naissance : 

Dernière modification par cerulean (Le 24/05/2015, à 20:01)

Hors ligne

#6 Le 24/05/2015, à 19:38

pingouinux

Re : [résolu] Question à 2 balles

Je pense qu'il suffit de supprimer le read -p à la ligne n° 24.

Hors ligne

#7 Le 24/05/2015, à 19:52

cerulean

Re : [résolu] Question à 2 balles

Ooops ...
Merci pour tout,
Bonne soirée

Hors ligne