[bash] [new-b] Variables qui ne sont pas interpretées

Variables qui ne sont pas interpretées [bash] [new-b] - Divers - Linux et OS Alternatifs

Marsh Posté le 17-07-2003 à 12:05:54    

J'ai fait un petit script qui doit mover des fichiers à partir d'un "home" vers ailleurs.
Mais en fait, j'aimerais bien pouvoir spécifier le user du "home" en début de fichier, pour pouvoir modifier ce parametre sans repartir dans le "code".
Or... ça marche pas. On dirait qu'il aime pas que j'appelle le "home" par tilde (~). Pourtant c'est bien comme ça qu'on est sensé faire, je crois...
Extrait:
reload_script:

Code :
  1. APPLI_USER="christophe"
  2. ########## END OF SETTINGS##########
  3. mv --target-directory=/ce_directory_est_destination ~$APPLI_USER/rep_source/ce_fichier_source_1 ~$APPLI_USER/rep_source/ce_fichier_source_2


 

Racing:/usr/local/bin# sh ./reload_script
mv: cannot stat `~christophe/rep_source/ce_fichier_source_1': No such file or directory
mv: cannot stat `~christophe/rep_source/ce_fichier_source_2': No such file or directory


Message édité par Figti le 17-07-2003 à 12:08:47
Reply

Marsh Posté le 17-07-2003 à 12:05:54   

Reply

Marsh Posté le 17-07-2003 à 13:26:32    

et tes fichiers existent bien ?


Message édité par Dark_Schneider le 17-07-2003 à 13:26:51

---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 17-07-2003 à 13:30:28    

Ce n'est pas ça le problème. Le problème, c'est qu'il ne trouve pas le fichier qui s'appelle ~christophe/machin/ , ce qui est logique, puisqu'il n'existe pas. en fait il n'interprète pas la chaîne ~christophe comme étant le chemin du répertoire $HOME de l'utilisateur christophe, mais juste comme étant le chaîne de caractères ~christophe.
 
Je ne suis pas sûr de la raison, mais il me semble que c'est dû au fait que le ~nom_utilisateur ne fonctionne qu'en mode interactif pour représenter le répertoire en question.
 
Rajoute une variable pour identifer le répertoire $HOME de l'utilisateur et sers-t-en de cette façon :
 

Code :
  1. APPLI_USER="christophe"
  2. ########## END OF SETTINGS##########
  3. $HOME_USER=$(cat /etc/passwd | grep "$APPLI_USER" | awk -F ':' '{print $6}')
  4. mv --target-directory=/ce_directory_est_destination ${HOME_USER}/rep_source/ce_fichier_source_1 ${HOME_USER}/rep_source/ce_fichier_source_2

Reply

Marsh Posté le 17-07-2003 à 14:01:10    

Excellent, effectivement ça me sort ce qu'il me faut.
 
Par contre (héhé...), je me suis planté dans le nom de la variable $APPLI_USER , et donc le grep n'a rien donné.
 
Mais, euh, j'ai exécuté mon script en root sans trop m'en rendre compte (ah, j'avais marqué new-b hein :D). Il a commencé farfouiller avec des trucs qu'il devait pas, et je ne l'ai arrete qu'au bout de quelques secondes.
Euh, maintenant il reconnait plus "grep", "sh" ni meme "ls". OOOOPPPS!
 
C'est grave docteur?
J'le prends bien, mais je crois que je vais regreter mes 2 secondes d'inattention...  :whistle:


Message édité par Figti le 17-07-2003 à 14:01:50
Reply

Marsh Posté le 17-07-2003 à 14:02:33    

Essaye avec /home/${APPLI_USER} plutot.

Reply

Marsh Posté le 17-07-2003 à 14:26:59    

Oui, j'essaierai aussi. Bon entre temps mon probleme est résolu. Il avait juste tout bougé dans le --target-directory. (ouf :sweat:)

Reply

Marsh Posté le 17-07-2003 à 14:28:26    

:lol:


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
Reply

Marsh Posté le 17-07-2003 à 17:10:07    

Sixtiz a écrit :

Essaye avec /home/${APPLI_USER} plutot.

Le problème de cette solution, c'est que le répertoire $HOME d'un utilisateur lambda n'est pas forcément /home/lambda/. Ça dépend des admins et de la machine (sur ma machine personnelle, tout le monde est dans /home/ ), mais si beaucoup de monde utilise une machine, les comptes peuvent être mis dans /home/groupe1/user[1-100], /home/groupe2/user[101-200], etc ...
Et donc ton truc ne marche que si le chemin des répertoires $HOME est identique pour tous les utilisateurs.

Reply

Marsh Posté le 17-07-2003 à 17:13:15    

Figti a écrit :

Oui, j'essaierai aussi. Bon entre temps mon probleme est résolu. Il avait juste tout bougé dans le --target-directory. (ouf :sweat:)

Ah ben oui, j'ai pas regardé ce que faisait ta commande. Quand t'es pas sûr et que tu veux manipuler des répertoires (surtout avec des rm et des mv), écris ta commande en rajoutant un echo devant, et fais juste un ls sur chacun des répertoires ou fichiers manipulés.
Le echo te montre ce que va faire ta commande, et le ls t'assure que les fichiers ou répertoires vont être trouvés.

Reply

Marsh Posté le 18-07-2003 à 20:40:20    

Ouais... pask'en fait, y'avait pas mal de truc en vrac.
Si au début j'ai cru que tout allait bien, petit à petit le ssh marchait plus, puis le ftp, puis l'adsl commençait à merder...
 
J'avais plus trop confiance dans la machine. Et donc, en bon petit new-b débarqué de M$ je suis parti dans une réinstall complète :pt1cable:.
Mais bon, c'est plutôt positif. J'ai appris par moi-même qu'il fallait pas exécuter ses propres petits scripts pourraves en root... fallait bien que ça m'arrive un jour  :lol:


Message édité par Figti le 18-07-2003 à 20:41:26
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed