[linux] Re: Parameter met een spatie gebruiken in een script

Wybo Dekker wybo op servalys.nl
Ma Sep 10 18:02:41 CEST 2007



Cecil Westerhof wrote:
> Ik heb het volgende script:
> 
> ##########
> #!/usr/bin/env bash
> 
> if [[ ${#} -ne 1 ]] ; then
>   echo "gebuik: ${0} <backup_disk>"
>   exit -1
> fi
> 
> DIR=${1}'/'`date +%F`
> echo "De copie wordt neergezet op ${DIR}"
> mkdir -p ${DIR}
> cp -pr /vmware/monica/* ${DIR}
> ##########
> 
> Dit roep ik aan met:
>     ./backup '/media/WD\ Passport/'

je moet, waar nodig, filenamen in je script tussen "" zetten:

#!/usr/bin/env bash

if [ $# -ne 1 ] ; then
   echo gebruik: `basename $0` "<backup_disk>"
   exit -1
fi

DIR="$1/`date +%F`"
echo "De copie wordt neergezet op $DIR"
mkdir -p "$DIR"
cp -pr /tmp/* "$DIR"

en in de call hetzij quotes gebruiken, dan wel \. dus
./backup '/media/WD Passport/'

of
./backup /media/WD\ Passport/

niet allebei

> Helaas zit er een spatie in de naam. :-{
> 
> En dit geeft:
>     De copie wordt neergezet op /media/WD\ Passport//2007-09-10
>     mkdir: kan map `/media/WD\\ Passport' niet aanmaken: Toegang
> geweigerd
> 
> Als ik handmatig het commando uitvoer, wordt de directory wel
> aangemaakt. Wat doe ik hier fout?
> 
> 
> 

-- 
Wybo



More information about the Linux mailing list