The UNIX and Linux Forums  


Go Back   De Unix-en Linux Forum > Top Forums > Programmeren en Shell Scripting
.
google unix.com



Programmeren en Shell Scripting Post vragen over KSH, CSH, SH, Bash, Perl, PHP, sed, awk en andere shell scripts en shell scripting talen hier.

Meer UNIX en Linux Forum Onderwerpen Misschien vindt u Helpful
Draad Thread Starter Forum Antwoorden Last Post
Automatisch kopiëren van bestanden naar een andere map verplaatsen op instant schriftelijk Bashar UNIX for Advanced & Expert Gebruikers 2 08-21-2008 03:44 PM
foreach lus ROOZ Programmeren en Shell Scripting 3 06-05-2008 04:20 PM
foreach lus abch624 Programmeren en Shell Scripting 1 03-19-2008 09:34 PM
Parse het. Txt-bestand voor de mapnaam en FTP aan de corrsponding map. MeganP Programmeren en Shell Scripting 3 07-03-2007 02:54 PM
foreach commando? geoquest UNIX voor Dummies Questions & Answers 5 05-20-2002 06:11 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Zoeken in deze Thread Rate Thread Display Modes
  #1 (permalink)  
Old 08-10-2007
eltinator eltinator is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 63
foreach map

Hoi,

Ik heb een klein probleem hier en ik kan het niet krijgen om te werken. Ik ben het programmeren van een script voor bash en ik moet iets doen om de map in een map. Dus ik ben in de gids en ik wil de foreach verklaring gebruiken, maar I dont weet hoe alle mappen van die directory referentie. Om de zaken simplistisch hier te maken is mijn code:


Code:
foreach instance (.)
cd instance
mkdir test
end

in principe voor elke map in die map, ik wil de cd erin en een map met de naam test. Any ideas?
  #2 (permalink)  
Old 08-11-2007
blowtorch's Avatar
steekvlam blowtorch is offline Forum Advisor  
Supporter
  
 

Join Date: december 2004
Locatie: Singapore
Berichten: 2350
Iets als dit:

Code:
for file in *; do
   if [ -d $file ]; then
      cd $file; mkdir test
   fi
done

-EDIT -
U kunt overslaan testen voor directory als goed. 'cd' werkt niet op alles behalve mappen (maar er zou kunnen zijn links die verwijzen naar mappen en je zou uiteindelijk het creëren van "test" waar je niet wilt).
  #3 (permalink)  
Old 08-11-2007
lorcan lorcan is offline
Geregistreerde gebruiker
  
 

Join Date: May 2007
Posts: 219
Een kleine correctie glasblazen.


Code:
for file in *; do
   if [ -d $file ]; then
      mkdir $file/test; 
   fi
done

Omdat je een cd had uitgebracht commando zou de sub-dir maken alleen voor de eerste map. Dus het resultaat niet zoals verwacht.

Laatst gewijzigd door lorcan; op 08.11.2007 08:51..
  #4 (permalink)  
Old 08-13-2007
eltinator eltinator is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 63
Citaat:
Oorspronkelijk geplaatst door lorcan View Post
Een kleine correctie glasblazen.


Code:
for file in *; do
   if [ -d $file ]; then
      mkdir $file/test; 
   fi
done

Omdat je een cd had uitgebracht commando zou de sub-dir maken alleen voor de eerste map. Dus het resultaat niet zoals verwacht.
Hoi, ik had een vraag over de cd ding, hoe komt het niet werkt? Ik ben tot wijziging van de code in te gaan op bepaalde submappen in elke map en dan een opdracht, dus ik was niet zeker hoe dat te doen uitvoeren. Eigenlijk Ik probeer iets te doen als dit nu ...

huidige directory:
abc

Binnenkant van elke map is er een bestand hier (met behulp van een als voorbeeld):
a / test / folder / script.sh

Sorry voor de generieke namen. Nu wat ik wil mijn script te doen is de toegang die script.sh in elke map en voer het uit. Ik was gaan doen voor de verklaring van de cd en dan in dat pad en voer vervolgens een commando uit te voeren, maar ik denk dat het niet zo eenvoudig. Any ideas? bedankt!
  #5 (permalink)  
Old 08-13-2007
lorcan lorcan is offline
Geregistreerde gebruiker
  
 

Join Date: May 2007
Posts: 219
U kunt proberen als


Code:
for file in *; do
   if [ -d $file ]; then
      ./$file/test/folder/script.sh; 
   fi
done


of als u het bijzonder ingaan op de r. en voer het script, probeer dan zo


Code:
scriptHome=$(pwd)   # Assuming that you are running from the path where a b c are present
for file in *; do
   if [ -d $file ]; then
      cd $file/test/folder;
      ./script.sh
   fi
   cd $scriptHome
done

Weer ervan uitgaande dat de boomstructuur test / map aanwezig is in de directory's a, b en c.
  #6 (permalink)  
Old 08-11-2007
reborg's Avatar
reborg reborg is online now Forum Staff  
Administrator
  
 

Join Date: Mar 2005
Locatie: Ierland
Berichten: 4.245
Citaat:
Oorspronkelijk geplaatst door eltinator View Post
Hoi,

Code:
foreach instance (.)
cd instance
mkdir test
end
Uw grootste probleem hier was niet logisch, maar dat je met behulp van de syntaxis van de verkeerde schaal. Dit is csh syntax.
  #7 (permalink)  
Old 08-11-2007
eltinator eltinator is offline
Geregistreerde gebruiker
  
 

Join Date: juli 2007
Posts: 63
Thanks guys. Dus eigenlijk is er geen foreach commando in bash?
Closed Thread

Bladwijzers

Thread Tools Zoeken in deze Thread
Zoeken in deze Thread:

Uitgebreid zoeken
Display Modes Beoordeel deze draad
Beoordeel deze draad:

Posting Regels
Jij mag niet Post Nieuwe threads
Jij mag niet na antwoorden
Jij mag niet post attachments
Jij mag niet bewerk uw berichten

BB code is Aan
Smilies zijn Aan
[IMG] code Aan
HTML-code is Uit
Trackbacks zijn Aan
Pingbacks zijn Aan
Refbacks zijn Aan




Alle tijden zijn GMT -4. Het is nu 09:43.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Vertalingen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
De Unix-en Linux Forums Copyright © 1993-2009. Alle rechten Reserved.Ad Beheer door RedTyger

Content Relevante URL's door vBSEO 3.2.0