Shellscript problem.

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Umeå
  • 2007-03-29 09:04

Vid användning av sökvägar som innehåller mellanslag (vilken man inte ska använda sig av, med det gör ju Apple ändå..) upp kommer en artefakt om man definierar sökvägen som en variabel.

Ett script som detta fungerar inte av någon anledning.

#!/bin/bash
mapp="/Users/$LOGNAME/Library/Application\ Support/Firefox/"
destination="/Users/$LOGNAME/Desktop/Backup/"
mkdir $destination
cp -v $mapp $destination

när detta script körs så fås följande felmeddelanden.

cp: Support/Firefox/: No such file or directory
cp: /Users/narogh/Library/Application\: No such file or directory

Om man däremot kör en

echo $mapp

så blir det rätt.

Det verkar som om cp delar upp sökvägen trots att den är definierad som en enhet.

Frågan är du hur man gör för att det skall fungera utan att man behöver ta till diverse fulknep med symlinkar mm.

  • Medlem
  • Kiruna
  • 2007-03-29 09:31
mkdir "$destination"
cp -v "$mapp" "$destination"

Mig veterligen behöver du inte använda dig av Escape chars när du placerar sökvägen inom citationstecken.

Dessutom måste du använda -r flaggan på cp
Koden blir alltså:

#!/bin/bash
mapp="/Users/$LOGNAME/Library/Application Support/Firefox/"
destination="/Users/$LOGNAME/Desktop/Backup/"
mkdir "$destination"
cp -rv "$mapp" "$destination"

eller

#!/bin/bash
mapp=/Volumes/Users/tycho/Library/Application\ Support/Firefox/
destination=/Volumes/Users/tycho/Desktop/Backup/
mkdir "$destination"
cp -rv "$mapp" "$destination"

  • Medlem
  • Umeå
  • 2007-03-29 17:55

Problemet låg inte i koden som helhet utan i att det saknades cituationstecken i själva kopierings kommandot.
Men nu är det löst, samt ytterligare en påminnelse att man ska inte försöka lösa andras problem klockan halv tre på morgonen... man tänker bättre utvilad.

1
Bevaka tråden