Come posso rendere bash di OS X espandere $ PWD in base alla distinzione tra maiuscole e minuscole?

2

Sto utilizzando OS X 10.8 su un MBP 2011. Uso alcuni script bash per attività come backup di server remoti. Uno degli script contiene questo frammento:

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

Quando eseguo questo script in /Users/myuser/Documents/Backup (notare il maiuscolo B), ottengo questa risposta:

Wrong path: /Users/myuser/Documents/backup

Per qualche motivo, $PWD viene espanso in un nome minuscolo. Come posso alleviare questo? Il mio filesystem non fa distinzione tra maiuscole e minuscole: sia cd Backup che cd backup funzionano.

    
posta Arne 18.07.2013 - 20:47
fonte

1 risposta

3

Hai due opzioni in realtà: converti $PWD in un caso coerente prima di confrontarti con l'altra stringa (che dovrebbe avere anche un caso coerente). Oppure elimina i confronti tra maiuscole e minuscole.

Conversione in minuscolo prima di confrontare:

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

Eliminazione dei confronti sensibili al maiuscolo / minuscolo:

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

Leggi altre domande sui tag