Aller au contenu
  • 0

Parametres Dans Variables


tifman

Question

Bonjour

Je suis actuellement en train de faire quelque scripts en sh pour tenter d'automatiser quelques taches sur mes qnap malheureusement je me heurte à un problème:

Quand je veux affecté un paramètre en variable en ayant lancé mon script sh via la variable récupère apparemment un "/r".

concrètement si je tape

fichier=$1

fichierarchive=/share/Archive/$1

echo a$fichier a

echo a$1 a

echo a$fichierarchive a

je récupère (en ayant envoyé tetet pour l'exemple):

aetet

atetet a

ashare/Archive/tetet

quelqu'un a t il déjà eu ce genre de problème?

J'ai testé la même ligne sous un bash sur qnap avec le même résultat et sur un sh et un bash sous ubuntu avec le résultat attendu...

Tifman

Lien vers le commentaire
Partager sur d’autres sites

4 réponses à cette question

Messages recommandés

  • 0

Bonjour,

Bonjour

Je suis actuellement en train de faire quelque scripts en sh pour tenter d'automatiser quelques taches sur mes qnap malheureusement je me heurte à un problème:

Quand je veux affecté un paramètre en variable en ayant lancé mon script sh via [url="[url="ssh-avec-putty/-avec-putty/"]ssh-avec-putty/-avec-putty/"][url="ssh-avec-putty/-avec-putty/"]ssh-avec-putty/ la variable récupère apparemment un "/r".

concrètement si je tape

fichier=$1

fichierarchive=/share/Archive/$1

echo a$fichier a

echo a$1 a

echo a$fichierarchive a

je récupère (en ayant envoyé tetet pour l'exemple):

aetet

atetet a

ashare/Archive/tetet

quelqu'un a t il déjà eu ce genre de problème?

J'ai testé la même ligne sous un bash sur qnap avec le même résultat et sur un sh et un bash sous ubuntu avec le résultat attendu...

Tifman

Pour éviter ce genre de problème et être conforme aux normes Posix (supporté par toutes les variantes de sh, bash et dash .... )

PROTÉGEZ vos paramètres ET groupez vos paramètres de echo entre guillemets :

echo "a${fichier}archive a" (pour utilisez $fichier et ajouter archive ... au texte)

ou echo "a${fichierarchive} a" (pour utiliser $fichierarchive )

la différence entre $1 et $xxx avec xxx initialisé dans le code ... c'est le moment ou est fait l'échange (l'un AVANT le lancement de l’exécution, l'autre APRÈS .... )

l'ai pris pour règle de toujours (sauf quand j'oublie :roll: ) protéger mes variables ... et évitez les fichier , fichier1 fichier2 comme nom de variables, rien ne vaut des termes explicites et non prêtant à confusion ....

Pour voir les différences de comportement par exemple : echo (fourni par busybox) et echo des ipkg (faites un --help pour voir la différence :razz: ), car les applets de busybox NE FONCTIONNE pas toutes, comme les programmes "complet"

Philippe.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Je me permet de rajouter que les arguments $1 à $9 sont à utiliser une seule fois dans le script, idéalement au début pour renseigner des variables que tu utiliseras tout au long de ton script.


#!/bin/bash


# Recup des arguments

fichier="${1}"

fichier2="${2}"


# utilisation

echo "fichier = ${fichier}"

echo "fichier2 = ${fichier2}"


Lien vers le commentaire
Partager sur d’autres sites

  • 0

Désolé j'avais résolu mon problème pais oublié ce post.

Le problème venait du fait que j'avais fait mon script en utilisant notepad++ sous windows et que les caractères de retours à la ligne par default étaient au format windows (CR+LF).

Merci pour l'attention portée à ma question

Lien vers le commentaire
Partager sur d’autres sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Invité
Répondre à cette question…

×   Vous avez collé du contenu avec mise en forme.   Supprimer la mise en forme

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...