2 votes

Comment puis-je faire en sorte que le bash d'OS X étende $PWD pour être sensible à la casse ?

J'utilise OS X 10.8 sur un MBP 2011. J'utilise quelques bash-scripts pour des tâches comme les sauvegardes de serveurs distants. Un des scripts contient ce snippet :

#!/bin/bash
if [ "$PWD" != /Users/myuser/Documents/Backup ]
then
    echo "Wrong path: $PWD"
    exit 0
fi

Quand j'exécute ce script en /Users/myuser/Documents/Backup (notez la majuscule B), je reçois cette réponse :

Wrong path: /Users/myuser/Documents/backup

Pour une raison quelconque, le $PWD est étendu à un nom en minuscules. Comment puis-je remédier à cela ? Mon système de fichiers n'est pas sensible à la casse : les deux cd Backup y cd backup travail.

3voto

shsteimer Points 8749

Vous avez deux choix en fait : convertir $PWD à une casse cohérente avant de la comparer à votre autre chaîne (qui devrait également avoir une casse cohérente). Ou laissez tomber les comparaisons sensibles à la casse.

Le convertir en minuscules avant de le comparer :

#!/bin/bash
if [ `echo $PWD | tr [:upper:] [:lower:]` != /users/myuser/documents/backup ]
then
    echo "Wrong path: $PWD"
    exit 0
fi

Suppression des comparaisons sensibles à la casse :

#!/bin/bash
shopt -s nocasematch
if [[ "$PWD" != /Users/myuser/Documents/Backup ]]
then
    echo "Wrong path: $PWD"
    exit 0
fi

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X