Csh marche mal avec mandriva (suite)
Résolu
kalagani
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
kalagani Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
kalagani Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
la solution consistant à mettre /bin/tcsh devant le nom du script cf lien
http://www.commentcamarche.net/forum/affich 3891755 csh marche mal avec mandriva
ne marche pas chez moi
/bin/tcsh ../tif2jpeg.sh.utf
mkdir: ne peut créer le répertoire `jpg\r': Argument invalide
: Command not found.
: Command not found.
foreach: Words not parenthesized.
L'étrangeté, c'est que quand je lance une à une chaque ligne du script, tout s'exécute
(J'avais pensé à un pb d'encodage, entre iso-8859-1 et utf-8, mais non, même pb ds les 2 cas.)
Alors, si quelqu'un a une idée, car je n'arrive pas à trouver.
Merci
Le script
#!/bin/tcsh
# Conversion de toutes les images au format tiff (extensions .tif) au format jpg, qualité 90%
# Les images crées sont placées dans un sous dossier jpg du dossier de départ
#
mkdir jpg
# Boucle pour transformer les *.tif
foreach f ("`/bin/ls *.tif`")
echo fichier à convertir : $f
set g=jpg/`basename "$f" .tif`.jpg
echo Production de : `basename "$f" .tif`.jpg
/usr/local/bin/convert -quality 90 "$f" "$g"
end
exit
la solution consistant à mettre /bin/tcsh devant le nom du script cf lien
http://www.commentcamarche.net/forum/affich 3891755 csh marche mal avec mandriva
ne marche pas chez moi
/bin/tcsh ../tif2jpeg.sh.utf
mkdir: ne peut créer le répertoire `jpg\r': Argument invalide
: Command not found.
: Command not found.
foreach: Words not parenthesized.
L'étrangeté, c'est que quand je lance une à une chaque ligne du script, tout s'exécute
(J'avais pensé à un pb d'encodage, entre iso-8859-1 et utf-8, mais non, même pb ds les 2 cas.)
Alors, si quelqu'un a une idée, car je n'arrive pas à trouver.
Merci
Le script
#!/bin/tcsh
# Conversion de toutes les images au format tiff (extensions .tif) au format jpg, qualité 90%
# Les images crées sont placées dans un sous dossier jpg du dossier de départ
#
mkdir jpg
# Boucle pour transformer les *.tif
foreach f ("`/bin/ls *.tif`")
echo fichier à convertir : $f
set g=jpg/`basename "$f" .tif`.jpg
echo Production de : `basename "$f" .tif`.jpg
/usr/local/bin/convert -quality 90 "$f" "$g"
end
exit
A voir également:
- Csh marche mal avec mandriva (suite)
- Pourquoi la tnt fonctionne mal en ce moment - Guide
- Mon pc capte mal le wifi - Forum WiFi
- Le Wifi de mon PC portable capte mal - Forum PC portable
- Clic souris fonctionne mal - Forum souris / Touchpad
- Mon imprimante imprime mal ✓ - Forum Imprimante
5 réponses
Bonjour,
et bien je suis surpris car je n'ai pas de .tcshrc dans mon home! je croyais qu'il y en avait un par défaut.
Il y a juste le .bashrc qui renvoie au /etc/bashrc
Dans ce /etc/ nulle trace non plus de tcshrc, juste un csh.cshrc
et bien je suis surpris car je n'ai pas de .tcshrc dans mon home! je croyais qu'il y en avait un par défaut.
Il y a juste le .bashrc qui renvoie au /etc/bashrc
Dans ce /etc/ nulle trace non plus de tcshrc, juste un csh.cshrc
foreach f ("`/bin/ls *.tif`")
Ca normalement ca ne peut pas marcher...
foreach f (`/bin/ls *.tif`)
devrait aller un peut mieux, les quotes empêchent l'execution de la commande.
et pour le problème de \r c'est certainement du au fait que le fichier est au format dos.
La commande dos2unix devrait corriger le problème.
cdt,
gbe
Ca normalement ca ne peut pas marcher...
foreach f (`/bin/ls *.tif`)
devrait aller un peut mieux, les quotes empêchent l'execution de la commande.
et pour le problème de \r c'est certainement du au fait que le fichier est au format dos.
La commande dos2unix devrait corriger le problème.
cdt,
gbe
Bonjour,
j'ai réexécuté ligne à ligne le script mais cette fois avec l'option -x lors de l'invocation du tcsh:
cela montre que pas besoin d'espace pour set g = jpg
que foreach f ("`/bin/ls *.tif`") est bien interprété comme foreach f (`/bin/ls *.tif`)
et que tout s'exécute, j'ai bien les fichiers tif transformés en jpg dans le répertoire jpg.
dos2unix tif2jpeg.sh.utf > tif2jpeg.sh.utf.unix me donne un fichier vide
-rwxrwxrwx 1 root root 810 mar 16 11:58 tif2jpeg.sh.utf*
-rwxrwxrwx 1 root root 0 mar 16 11:58 tif2jpeg.sh.utf.unix*
Du coup je resoupçonne un pb d'encodage du fichier script,
la base de celui-ci vient d'une recopie d'une page web:
http://www.xrings.net/xrings/forum.php3?id_article=192&id_forum=2293
emacs tif2jpeg.sh.utf indique (en bas à gauche) un d'encodage -&(DOS)--
alors que d'autres scripts qui fonctionnent (mais en bash) sont indiques -u:--
/bin/tcsh -x
[root@localhost 1982-09-13-d_preparationEspagne]# mkdir jpg
mkdir jpg
[root@localhost 1982-09-13-d_preparationEspagne]# foreach f ("`/bin/ls *.tif`")
foreach f ( `/bin/ls *.tif` )
/bin/ls 1982_09_001_preparationEspagne.tif 1982_09_002_preparationEspagne.tif 1982_09_003_preparationEspagne.tif 1982_09_004_preparationEspagne.tif
foreach? echo fichier à convertir : $f
foreach? set g=jpg/`basename "$f" .tif`.jpg
foreach? echo Production de : `basename "$f" .tif`.jpg
foreach? /usr/local/bin/convert -quality 90 "$f" "$g"
foreach? end
echo fichier à convertir : 1982_09_001_preparationEspagne.tif
fichier à convertir : 1982_09_001_preparationEspagne.tif
set g=jpg/`basename "$f" .tif`.jpg
basename 1982_09_001_preparationEspagne.tif .tif
echo Production de : `basename "$f" .tif`.jpg
basename 1982_09_001_preparationEspagne.tif .tif
Production de : 1982_09_001_preparationEspagne.jpg
/usr/local/bin/convert -quality 90 1982_09_001_preparationEspagne.tif jpg/1982_09_001_preparationEspagne.jpg
end
...etc...etc
ls -l jpg
ls --color=tty -l jpg
total 112608
-rwxrwxrwx 1 root root 4652199 mar 16 11:28 1982_09_001_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 30373 mar 16 11:28 1982_09_001_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4921546 mar 16 11:28 1982_09_002_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 25854 mar 16 11:28 1982_09_002_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4599262 mar 16 11:28 1982_09_003_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 27887 mar 16 11:28 1982_09_003_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4241201 mar 16 11:28 1982_09_004_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 26243 mar 16 11:28 1982_09_004_preparationEspagne-1.jpg
j'ai réexécuté ligne à ligne le script mais cette fois avec l'option -x lors de l'invocation du tcsh:
cela montre que pas besoin d'espace pour set g = jpg
que foreach f ("`/bin/ls *.tif`") est bien interprété comme foreach f (`/bin/ls *.tif`)
et que tout s'exécute, j'ai bien les fichiers tif transformés en jpg dans le répertoire jpg.
dos2unix tif2jpeg.sh.utf > tif2jpeg.sh.utf.unix me donne un fichier vide
-rwxrwxrwx 1 root root 810 mar 16 11:58 tif2jpeg.sh.utf*
-rwxrwxrwx 1 root root 0 mar 16 11:58 tif2jpeg.sh.utf.unix*
Du coup je resoupçonne un pb d'encodage du fichier script,
la base de celui-ci vient d'une recopie d'une page web:
http://www.xrings.net/xrings/forum.php3?id_article=192&id_forum=2293
emacs tif2jpeg.sh.utf indique (en bas à gauche) un d'encodage -&(DOS)--
alors que d'autres scripts qui fonctionnent (mais en bash) sont indiques -u:--
/bin/tcsh -x
[root@localhost 1982-09-13-d_preparationEspagne]# mkdir jpg
mkdir jpg
[root@localhost 1982-09-13-d_preparationEspagne]# foreach f ("`/bin/ls *.tif`")
foreach f ( `/bin/ls *.tif` )
/bin/ls 1982_09_001_preparationEspagne.tif 1982_09_002_preparationEspagne.tif 1982_09_003_preparationEspagne.tif 1982_09_004_preparationEspagne.tif
foreach? echo fichier à convertir : $f
foreach? set g=jpg/`basename "$f" .tif`.jpg
foreach? echo Production de : `basename "$f" .tif`.jpg
foreach? /usr/local/bin/convert -quality 90 "$f" "$g"
foreach? end
echo fichier à convertir : 1982_09_001_preparationEspagne.tif
fichier à convertir : 1982_09_001_preparationEspagne.tif
set g=jpg/`basename "$f" .tif`.jpg
basename 1982_09_001_preparationEspagne.tif .tif
echo Production de : `basename "$f" .tif`.jpg
basename 1982_09_001_preparationEspagne.tif .tif
Production de : 1982_09_001_preparationEspagne.jpg
/usr/local/bin/convert -quality 90 1982_09_001_preparationEspagne.tif jpg/1982_09_001_preparationEspagne.jpg
end
...etc...etc
ls -l jpg
ls --color=tty -l jpg
total 112608
-rwxrwxrwx 1 root root 4652199 mar 16 11:28 1982_09_001_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 30373 mar 16 11:28 1982_09_001_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4921546 mar 16 11:28 1982_09_002_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 25854 mar 16 11:28 1982_09_002_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4599262 mar 16 11:28 1982_09_003_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 27887 mar 16 11:28 1982_09_003_preparationEspagne-1.jpg
-rwxrwxrwx 1 root root 4241201 mar 16 11:28 1982_09_004_preparationEspagne-0.jpg
-rwxrwxrwx 1 root root 26243 mar 16 11:28 1982_09_004_preparationEspagne-1.jpg
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
finalement, repartant du script d'origine
il y avait 2 problèmes d'encodage, et un blanc malencontreux dans #! /bin/tcsh à l'invocation du script
Maintenant je lance directement le script sans invoquer tcsh avant (tjs sans fichier .tcshrc dans mon home)
j'ai fait:
1) encodage dos vers unix (merci gbe54)
dos2unix tif2jpeg.sh (et pas tif2jpeg.sh > tif2jpeg.sh qui me donnait un fichier vide)
une édition emacs du fichier converti montre alors -1:-- correspondant à encodage latin1
cela résoud les pb des lignes a, b, c
2) suppression du blanc
cela résoud les pb des lignes d, e
3) encodage latin vers utf (je suis en utf8: partitions ds /etc/fstab + conf Mandriva 2007.0 par défaut)
iconv -f latin1 -t utf8 tif2jpeg.sh > tif2jpeg.sh.utf2 (cette fois il faut bien la redirection quitte à renommer après)
une édition emacs du fichier converti montre alors -u:-- correspondant à encodage utf8
cela résoud le pb ligne f -> le , étant en réalité un à et il n'y avait qu'un seul .tif de converti en jpeg
a mkdir: ne peut créer le répertoire `jpg\r': Argument invalide
b : command not founde 7:
c : command not founde 9:
d ../tif2jpeg.sh: line 10: syntax error near unexpected token `('
e './tif2jpeg.sh: line 10: `foreach f (`/bin/ls *.tif`)
f fichier � convertir : 1982_09_001_preparationEspagne.tif
finalement, repartant du script d'origine
il y avait 2 problèmes d'encodage, et un blanc malencontreux dans #! /bin/tcsh à l'invocation du script
Maintenant je lance directement le script sans invoquer tcsh avant (tjs sans fichier .tcshrc dans mon home)
j'ai fait:
1) encodage dos vers unix (merci gbe54)
dos2unix tif2jpeg.sh (et pas tif2jpeg.sh > tif2jpeg.sh qui me donnait un fichier vide)
une édition emacs du fichier converti montre alors -1:-- correspondant à encodage latin1
cela résoud les pb des lignes a, b, c
2) suppression du blanc
cela résoud les pb des lignes d, e
3) encodage latin vers utf (je suis en utf8: partitions ds /etc/fstab + conf Mandriva 2007.0 par défaut)
iconv -f latin1 -t utf8 tif2jpeg.sh > tif2jpeg.sh.utf2 (cette fois il faut bien la redirection quitte à renommer après)
une édition emacs du fichier converti montre alors -u:-- correspondant à encodage utf8
cela résoud le pb ligne f -> le , étant en réalité un à et il n'y avait qu'un seul .tif de converti en jpeg
a mkdir: ne peut créer le répertoire `jpg\r': Argument invalide
b : command not founde 7:
c : command not founde 9:
d ../tif2jpeg.sh: line 10: syntax error near unexpected token `('
e './tif2jpeg.sh: line 10: `foreach f (`/bin/ls *.tif`)
f fichier � convertir : 1982_09_001_preparationEspagne.tif