at ændre en variable
hej linuxin
jeg er igang med at lave et script som kan overføre billeder til en mappe scriptet laver.
script:
#! /bin/bash
read -p "hvad skal albummet hede?" ALBUM
cd ..
cd Billeder
mkdir "$ALBUM"
gphoto2 --get-all-raw-data /home/boye/Billeder/
cp *.jpg $ALBUM/
rm *.jpg
det virker fint hvis ALBUM ikke har mellemrum i. men hvis ALBUM har mellemrum i skal jeg på en eller anden måde ændre variablen ved cp *.jpg $ALBUM/
jeg har prøvet med cp *.jpg ${ALBUM/ /\ }/
men det virker ikke... hvad skal jeg gøre??
- Log in to post comments
Kommentarer6
Du skal forsætte med at
Du skal forsætte med at beskytte din variabel ligesom du gør oppe i mkdir linien.
Det vil sige :
cp *.jpg "$ALBUM"
/carsten
Hvis jeg forstår
Hvis jeg forstår spørgsmålet rigtigt skal du bare replace " " med "\ ".
altså escape space.
det kan du gøre med sed:
ALBUM=`echo $ALBUM |sed 's/ /\ /g'`
Tror bare han mener at
Ingenting.. Mig der ikke er helt vågen :)
freex du forstpd mit
freex du forstpd mit spørgsmål rigtigt. men hvad skal jeg så gøre ved mit script for det virker??
Her gør du det
Her gør du det rigtigt:
mkdir "$ALBUM"
Og her gør du det forkert:
cp *.jpg $ALBUM/
Der er ikke nogen grund til at begynde at tilføje escape karakterer med sed når du blot kan beskytte variablen med gåseøjne som #1 også siger.
cp *.jpg "$ALBUM/"
yep "" om dine variabler vil
yep "" om dine variabler vil virke fint... sed versionen virker også fint.
du kan jo eventuelt prøve at køre disse fra en terminal.
Virker
mkdir "test test"
Virker
mkdir test\ test
Virker ikke
mkdir test test
Eks. til din kode.
#! /bin/bash
read -p "hvad skal albummet hede?" ALBUM
ALBUM=`echo $ALBUM |sed 's/ /\ /g'`
cd ..
cd Billeder
mkdir "$ALBUM"
gphoto2 --get-all-raw-data /home/boye/Billeder/
cp *.jpg $ALBUM/
rm *.jpg