D'abord uname -a pour que l'on puisse connaitre l'unix en question
et sa version.
Cette commmande me retourne:
'HP-UX' suivi du nom de la machine et plein d'autres trucs dont je
ne pense pas que ce soit utile de préciser (si besoin, fais le moi
savoir)
D'après les infos que j'ai, c'est une station HP Visualize C3600 qui
tourne sous HP-UX 10.20
C'est un debut, note : dans ce ng c'est plus simple de commencer par
dire : un HP-UX 10.20B me fait des miseres, AIX 4.3 cherche la bagarre
SCO 5.05 pete les plomb bref de commencer par annoncer la couleur de
l'unix.
Sinon sur HP-UX 10.20 /var est plein et cette machine est orpheline
en cas d'urgence absolu :
trouver un repertoire ou il y a un peu de place, noter le path et
creer
un repertoire temporaire ( ex: /u1/sauve )
dans ce repertoire copier les fichiers se trouvant dans /var/tmp
/var/spool/cron/tmp /var/mail
cela peut permettre de gagner de la place ...
mais si cette manip te semble trop hasardeuse tu peux appeller le
service HP ou ton revendeur
D'abord uname -a pour que l'on puisse connaitre l'unix en question
et sa version.
Cette commmande me retourne:
'HP-UX' suivi du nom de la machine et plein d'autres trucs dont je
ne pense pas que ce soit utile de préciser (si besoin, fais le moi
savoir)
D'après les infos que j'ai, c'est une station HP Visualize C3600 qui
tourne sous HP-UX 10.20
C'est un debut, note : dans ce ng c'est plus simple de commencer par
dire : un HP-UX 10.20B me fait des miseres, AIX 4.3 cherche la bagarre
SCO 5.05 pete les plomb bref de commencer par annoncer la couleur de
l'unix.
Sinon sur HP-UX 10.20 /var est plein et cette machine est orpheline
en cas d'urgence absolu :
trouver un repertoire ou il y a un peu de place, noter le path et
creer
un repertoire temporaire ( ex: /u1/sauve )
dans ce repertoire copier les fichiers se trouvant dans /var/tmp
/var/spool/cron/tmp /var/mail
cela peut permettre de gagner de la place ...
mais si cette manip te semble trop hasardeuse tu peux appeller le
service HP ou ton revendeur
D'abord uname -a pour que l'on puisse connaitre l'unix en question
et sa version.
Cette commmande me retourne:
'HP-UX' suivi du nom de la machine et plein d'autres trucs dont je
ne pense pas que ce soit utile de préciser (si besoin, fais le moi
savoir)
D'après les infos que j'ai, c'est une station HP Visualize C3600 qui
tourne sous HP-UX 10.20
C'est un debut, note : dans ce ng c'est plus simple de commencer par
dire : un HP-UX 10.20B me fait des miseres, AIX 4.3 cherche la bagarre
SCO 5.05 pete les plomb bref de commencer par annoncer la couleur de
l'unix.
Sinon sur HP-UX 10.20 /var est plein et cette machine est orpheline
en cas d'urgence absolu :
trouver un repertoire ou il y a un peu de place, noter le path et
creer
un repertoire temporaire ( ex: /u1/sauve )
dans ce repertoire copier les fichiers se trouvant dans /var/tmp
/var/spool/cron/tmp /var/mail
cela peut permettre de gagner de la place ...
mais si cette manip te semble trop hasardeuse tu peux appeller le
service HP ou ton revendeur
Au pire, il suffit de retourner le clavier, c'est écrit dessous (ça
m'a surpris moi aussi la première fois...)
Au pire, il suffit de retourner le clavier, c'est écrit dessous (ça
m'a surpris moi aussi la première fois...)
Au pire, il suffit de retourner le clavier, c'est écrit dessous (ça
m'a surpris moi aussi la première fois...)
Un dernier conseil: si tu n'es pas l'administrateur de cette machine,
évite de faire quoi que ce soit, même si les responsables ne sont pas là
et qu'elle va planter et qu'elle est vitale. Si tu foires quelque chose,
on ne saura pas forcément mettre en balance le fait que les responsables
n'ont pas fait leur boulot, et tu t'en prendras plein la g***le, sans
compter que tu n'auras pas forcément résolu le problème.
Un dernier conseil: si tu n'es pas l'administrateur de cette machine,
évite de faire quoi que ce soit, même si les responsables ne sont pas là
et qu'elle va planter et qu'elle est vitale. Si tu foires quelque chose,
on ne saura pas forcément mettre en balance le fait que les responsables
n'ont pas fait leur boulot, et tu t'en prendras plein la g***le, sans
compter que tu n'auras pas forcément résolu le problème.
Un dernier conseil: si tu n'es pas l'administrateur de cette machine,
évite de faire quoi que ce soit, même si les responsables ne sont pas là
et qu'elle va planter et qu'elle est vitale. Si tu foires quelque chose,
on ne saura pas forcément mettre en balance le fait que les responsables
n'ont pas fait leur boulot, et tu t'en prendras plein la g***le, sans
compter que tu n'auras pas forcément résolu le problème.
function demande () {
[...]
local commentaire="$1"
if [ $# -eq 0 ] ; then
echo -n " > " ; read reponse
while [ $state != final ] ; do
function demande () {
[...]
local commentaire="$1"
if [ $# -eq 0 ] ; then
echo -n " > " ; read reponse
while [ $state != final ] ; do
function demande () {
[...]
local commentaire="$1"
if [ $# -eq 0 ] ; then
echo -n " > " ; read reponse
while [ $state != final ] ; do
echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]
while [ $state != final ] ; do
Même remarque au niveau du quotage.
echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
2004-01-18, 00:59(+01), Pascal Bourguignon:
[...]function demande () {
[...]
Juste une remarque.
"function" ne sert à rien en bash.
Il a été rajouté pour "compatibilité" (de syntaxe seulement)
avec ksh, mais si tu veux utiliser la syntaxe ksh, c'est
function demande {
# sans ()
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
[...]if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[...]echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
2004-01-18, 00:59(+01), Pascal Bourguignon:
[...]
function demande () {
[...]
Juste une remarque.
"function" ne sert à rien en bash.
Il a été rajouté pour "compatibilité" (de syntaxe seulement)
avec ksh, mais si tu veux utiliser la syntaxe ksh, c'est
function demande {
# sans ()
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
[...]
if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[...]
echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]
while [ $state != final ] ; do
Même remarque au niveau du quotage.
2004-01-18, 00:59(+01), Pascal Bourguignon:
[...]function demande () {
[...]
Juste une remarque.
"function" ne sert à rien en bash.
Il a été rajouté pour "compatibilité" (de syntaxe seulement)
avec ksh, mais si tu veux utiliser la syntaxe ksh, c'est
function demande {
# sans ()
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
[...]if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[...]echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
Le Sun, 18 Jan 2004 15:16:03 +0100, Stephane nous disait:echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
Si je puis me permettre un petit bug-report, certaines séquences de
réponses font apparaître _deux fois_ la phrase de conclusion "Fin de la
session; le système expert vous remercie.". Par exemple la séquence
"non", "oui", "oui", "oui".
Le Sun, 18 Jan 2004 15:16:03 +0100, Stephane nous disait:
echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]
while [ $state != final ] ; do
Même remarque au niveau du quotage.
Si je puis me permettre un petit bug-report, certaines séquences de
réponses font apparaître _deux fois_ la phrase de conclusion "Fin de la
session; le système expert vous remercie.". Par exemple la séquence
"non", "oui", "oui", "oui".
Le Sun, 18 Jan 2004 15:16:03 +0100, Stephane nous disait:echo -n " > " ; read reponse
Tant qu'à être bash-specifique, tu peux utiliser l'option "-p"
de read. "echo -n" n'est pas plus portable.
[...]while [ $state != final ] ; do
Même remarque au niveau du quotage.
Si je puis me permettre un petit bug-report, certaines séquences de
réponses font apparaître _deux fois_ la phrase de conclusion "Fin de la
session; le système expert vous remercie.". Par exemple la séquence
"non", "oui", "oui", "oui".
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
Peut être qu'elle ne sert à rien pour bash, mais à moi elle me sert
assez, pour bien voir le début de mes fonction, et pour homogenéïser
la syntaxe avec d'autres langages que je connais.
[...]
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
Si, si, elles sont trés nécessaires:
[ pascal]$ function f() { for f in $1 ; do echo $f ; done ; }
[ pascal]$ f "a b c"
a
b
c
[...]if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[ pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[ pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
Peut être qu'elle ne sert à rien pour bash, mais à moi elle me sert
assez, pour bien voir le début de mes fonction, et pour homogenéïser
la syntaxe avec d'autres langages que je connais.
[...]
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
Si, si, elles sont trés nécessaires:
[pascal@thalassa pascal]$ function f() { for f in $1 ; do echo $f ; done ; }
[pascal@thalassa pascal]$ f "a b c"
a
b
c
[...]
if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[pascal@thalassa pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[pascal@thalassa pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
La syntaxe Bourne, POSIX et portable, c'est:
demande() {
# sans "function"
Peut être qu'elle ne sert à rien pour bash, mais à moi elle me sert
assez, pour bien voir le début de mes fonction, et pour homogenéïser
la syntaxe avec d'autres langages que je connais.
[...]
local commentaire="$1"
Ici, les quotes ne sont pas nécessaires.
(note que "local" est bash/zsh specifique, il ne manque pas
grand chose pour que ton script soit portable).
Si, si, elles sont trés nécessaires:
[ pascal]$ function f() { for f in $1 ; do echo $f ; done ; }
[ pascal]$ f "a b c"
a
b
c
[...]if [ $# -eq 0 ] ; then
Là, elles seraient préférables (même s'il y a peu de chance que
$# contiennent des caractères qui soient dans IFS, ou des
wildcards, il n'en demeure pas moins, que sémantiquement, ce
n'est pas correct, ($# non-quoté est une liste (IFS separated)
de fichiers)).
[ pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[ pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
Il y a assez peu d'endroits où elles ne sont pas nécessaires,
très peu où on ne doit pas les mettre. C'est pas compliqué, en
gros c'est là où le "word splitting" n'a pas de sens.
Elles ne sont pas nécessaires:
- dans les assignments a=$var
- dans case $var in
- à l'intérieur des [[ ]] (sauf à droite de = ou ==)
- à l'intérieur des $(( )), (( ))
- après les opérateurs de redirection sauf pour bash.
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
[ pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[ pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
Tu es sûr ? Et si toi ou quelqu'un d'autre va plus tard modifier
ce script, ou copier-coller ces lignes de code dans un autre
contexte ? Il faut que tu te poses la question à chaque fois...
Le plus simple est de mettre des quotes là où on ne veut pas de
word splitting ou de filename generation (plus de question à ce
poser).
$ echo 'IFS=x' > /tmp/s
$ BASH_ENV=/tmp/s bash -c 'echo "$IFS"'
x
(mais le problème ne se pose que si quelqu'un veut
intentionnellement faire planter le script, ici).
Il y a assez peu d'endroits où elles ne sont pas nécessaires,
très peu où on ne doit pas les mettre. C'est pas compliqué, en
gros c'est là où le "word splitting" n'a pas de sens.
Elles ne sont pas nécessaires:
- dans les assignments a=$var
- dans case $var in
- à l'intérieur des [[ ]] (sauf à droite de = ou ==)
- à l'intérieur des $(( )), (( ))
- après les opérateurs de redirection sauf pour bash.
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
[pascal@thalassa pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[pascal@thalassa pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
Tu es sûr ? Et si toi ou quelqu'un d'autre va plus tard modifier
ce script, ou copier-coller ces lignes de code dans un autre
contexte ? Il faut que tu te poses la question à chaque fois...
Le plus simple est de mettre des quotes là où on ne veut pas de
word splitting ou de filename generation (plus de question à ce
poser).
$ echo 'IFS=x' > /tmp/s
$ BASH_ENV=/tmp/s bash -c 'echo "$IFS"'
x
(mais le problème ne se pose que si quelqu'un veut
intentionnellement faire planter le script, ici).
Il y a assez peu d'endroits où elles ne sont pas nécessaires,
très peu où on ne doit pas les mettre. C'est pas compliqué, en
gros c'est là où le "word splitting" n'a pas de sens.
Elles ne sont pas nécessaires:
- dans les assignments a=$var
- dans case $var in
- à l'intérieur des [[ ]] (sauf à droite de = ou ==)
- à l'intérieur des $(( )), (( ))
- après les opérateurs de redirection sauf pour bash.
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
[ pascal]$ cat /tmp/s
#!/bin/bash
echo "IFS=$IFS"
[ pascal]$ IFS=x /tmp/s
IFS=
IFS n'est pas hérité comme une varible d'environnement normale. Si mon
programme n'y met pas de chiffre, je suis sur que $# ne comportera
qu'un seul mot.
Tu es sûr ? Et si toi ou quelqu'un d'autre va plus tard modifier
ce script, ou copier-coller ces lignes de code dans un autre
contexte ? Il faut que tu te poses la question à chaque fois...
Le plus simple est de mettre des quotes là où on ne veut pas de
word splitting ou de filename generation (plus de question à ce
poser).
$ echo 'IFS=x' > /tmp/s
$ BASH_ENV=/tmp/s bash -c 'echo "$IFS"'
x
(mais le problème ne se pose que si quelqu'un veut
intentionnellement faire planter le script, ici).
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
Donc, une règle bien compliquée, avec 5 items différents à retenir,
contre: mettre des quotes partout. Avec comme exception parce qu'on
est faignant: sauf si on est sûr (par déduction logique sur les
pré/post-conditions) que la variable ne contient qu'un seul mot.
[...]
Il me semble que dans $(( )), les quotes restent importantes:
Personnellement, j'ai perdu tout espoir de faire du "shell" modulaire
et réutilisable. Et je suis même passé par du shell "orienté objet",
c'est dire que je me suis posé la question... Si je veux faire un
module qui doit être maintenu, modifié, réutilisé ou copié-collé, ce
sera en Lisp.
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
Donc, une règle bien compliquée, avec 5 items différents à retenir,
contre: mettre des quotes partout. Avec comme exception parce qu'on
est faignant: sauf si on est sûr (par déduction logique sur les
pré/post-conditions) que la variable ne contient qu'un seul mot.
[...]
Il me semble que dans $(( )), les quotes restent importantes:
Personnellement, j'ai perdu tout espoir de faire du "shell" modulaire
et réutilisable. Et je suis même passé par du shell "orienté objet",
c'est dire que je me suis posé la question... Si je veux faire un
module qui doit être maintenu, modifié, réutilisé ou copié-collé, ce
sera en Lisp.
Partout ailleurs il faut mettre des quotes sauf si on veut
explicitement du "word splitting" et de la filename generation.
Donc, une règle bien compliquée, avec 5 items différents à retenir,
contre: mettre des quotes partout. Avec comme exception parce qu'on
est faignant: sauf si on est sûr (par déduction logique sur les
pré/post-conditions) que la variable ne contient qu'un seul mot.
[...]
Il me semble que dans $(( )), les quotes restent importantes:
Personnellement, j'ai perdu tout espoir de faire du "shell" modulaire
et réutilisable. Et je suis même passé par du shell "orienté objet",
c'est dire que je me suis posé la question... Si je veux faire un
module qui doit être maintenu, modifié, réutilisé ou copié-collé, ce
sera en Lisp.