• [^] # Re: pistes

    Posté par (site web personnel, Mastodon) . En réponse au message Problème sur enchainement de commandes find et rsync. Évalué à 2.

    il semble que l'option -I de xargs ne soit pas disponible, j'ai juste 4 options dispo : -r -x -0 et -t

    Je ne m'y attendais pas, vu que -I est une option POSIX ; mais bon vu que le BusyBox est vraiment très vieux... Il ne faut pas hésiter à le mettre à jour dès que possible.

    Heureusement qu'il restait la solution avec la boucle shell.

    NB : j'ai mis des "S" à la place de certains "$" pour ce post sinon c'était illisible

    Pour plusieurs lignes de code, il faut utiliser la syntaxe de bloc de code...
    https://linuxfr.org/wiki/aide-edition#toc-code-avec-coloration-syntaxique
    ...en veillant à sauter une ligne avant et après. Dedans, les dollars n'y sont pas problématiques et on a la coloration syntaxique.

    vu mon niveau

    Si ça peut te rassurer, il y en a qui n'en mènent pas plus large au bout de dix ans. Mais voici quelques trucs/astuces pour améliorer la portabilité (i.e. que ça fonctionne le jour où tu changes de shell/machine ...sous réserve qu'on ne rencontre pas quelque chose d'encore plus limité) :

    • Il me semble que certains shells peuvent ne pas comprendre/aimer la concaténation dans repcible="/share/data2_export/"ScibleS"/" ; il faut utiliser directement la chaîne avec la possibilité de remplacement : repcible="/share/data2_export/$cible/"
      • Idem, echo SnbS" fichiers trouvés" serait echo "$nb fichiers trouvés"
      • Dans les cas ambigus (mais on peut le faire systématiquement, ça mange pas de pain) comme resultat="Srepcible"S"liste.txt" il faut utiliser la syntaxe des noms de variable entre accolades : `resultat="${repcible}liste.txt"
    • Il faut prendre l'habitude de mettre systématiquement des "quotes" (sauf rares exceptions), comme dans mkdir "$repcible" et if [ "$reponse" = "x" ]; then
      • Donc, echo "$repcible"
      • et cat "$resultat"
      • et même nb=$(wc -l < "$resultat")
    • J'aurais pas pensé que read accepte l'option -p car ce n'est pas le cas partout. Donc je prend l'habitude de faire en deux temps... Par contre, sauf bonne raison, il faut toujours utiliser l'option -r dans les scripts : ça évite les surprises avec certains caractères spéciaux (plus particulièrement les \ qu'il tente d'interpréter)

    "It is seldom that liberty of any kind is lost all at once." ― David Hume