Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2247 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°293013
Figti
Posté le 17-07-2003 à 12:05:54  profilanswer
 

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
mood
Publicité
Posté le 17-07-2003 à 12:05:54  profilanswer
 

n°293047
Dark_Schne​ider
Close the World, Open the Net
Posté le 17-07-2003 à 13:26:32  profilanswer
 

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
n°293050
Jak
Back to Slack !
Posté le 17-07-2003 à 13:30:28  profilanswer
 

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

n°293055
Figti
Posté le 17-07-2003 à 14:01:10  profilanswer
 

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
n°293056
Sixtiz
Serial glandeur
Posté le 17-07-2003 à 14:02:33  profilanswer
 

Essaye avec /home/${APPLI_USER} plutot.

n°293068
Figti
Posté le 17-07-2003 à 14:26:59  profilanswer
 

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

n°293070
Dark_Schne​ider
Close the World, Open the Net
Posté le 17-07-2003 à 14:28:26  profilanswer
 

:lol:


---------------
Mandriva : parce que nous le valons bien ! http://linux-wizard.net/index.php
n°293122
Jak
Back to Slack !
Posté le 17-07-2003 à 17:10:07  profilanswer
 

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.

n°293124
Jak
Back to Slack !
Posté le 17-07-2003 à 17:13:15  profilanswer
 

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.

n°293687
Figti
Posté le 18-07-2003 à 20:40:20  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Divers

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

 

Sujets relatifs
[bash] au login, .bashrc n'est pas exécuté :-(appliquer un script ou un programme récursivement [ bash ]
bash_completion et développement de ~[Bash] checker une dependance, which & Cie
bash: locale: command not found[BASH] droits différents sur fichiers et dossiers
[bash] faire un rm de " ls | grep -E "^[1-9]{1,2} "[bash] gestion parc informatic, wake on lan
bash: longue commande -> retour à la ligne qui se fait pasComptes des service (apache, ftp, ...), Quel interpreteur ? Bash ?
Plus de sujets relatifs à : [bash] [new-b] Variables qui ne sont pas interpretées


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR