The UNIX and Linux Forums  
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.

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
Bash Shell sh Shell in een script saurabh84g Programmeren en Shell Scripting 8 08-29-2008 05:51
verschillende shell csh bash ajp7701 Programmeren en Shell Scripting 1 04-18-2008 04:19 PM
C shell plaats van bash ajp7701 Programmeren en Shell Scripting 0 03-18-2008 04:15 PM
Bash Shell BG_JrAdmin Linux 1 08-07-2006 01:56 PM
Bash shell ... VijayHegde Programmeren en Shell Scripting 2 06-06-2006 08:09

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-28-2008
RockyC123 RockyC123 is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2008
Posten: 6
bash-shell leidingen

Hallo allemaal,

Ik ben nieuw voor bash. Ik probeer een sub-string van een variabele te krijgen in een shell script. Terwijl proberen te doen dat ik de volgende foutmelding:

-------------------------------------------------- ----------------------
OHOME: / AAA / BBB / product / eee
. / t.sh: lijn 6: / AAA / BBB / product / eee: Onbekend bestand of map
Oracle Base:
-------------------------------------------------- ----------------------

Hier is de code:

-------------------------------------------------- ----------------------
#! / bin / sh

OHOME \u003d / AAA / BBB / product / eee
echo "OHOME:" $ OHOME

O_BASE \u003d echo $ OHOME | awk-F "/" '(for (i \u003d 2; i <\u003d NF; i + +) (if ($ i \u003d\u003d "product") (exit;) a \u003d een "/" $ i ;)) '

echo "Oracle Base:" $ O_BASE
-------------------------------------------------- ----------------------

Ik ben zeer verbaasd. Omdat het lijkt niet te willen "$ OHOME echo" Ik heb geprobeerd een aantal dingen als omsluit tussen haakjes, enkel / dubbele aanhalingstekens, enz. Ik krijg nog steeds deze fout. Ik kan niet lijken te vinden in de syntaxis van het boek of Google

Ziet er heel simpel, maar ik zit vast op deze uren. Misschien deskundigen kan hier guide me.

Hier is onze Linux-versie:

Linux 2.6.9-<name> 67.0.20.ELsmp # 1 SMP Wed Jun 18 12:40:47 EDT 2008 i686 i686 i386 GNU/Linux

Rocky.
  #2 (permalink)  
Old 08-28-2008
tijdperk era is offline Forum Advisor  
Herder van Nutteloze Cats (On Sabbatical)
  
 

Join Datum: maart 2008
Locatie: / er / is / alleen / bin / sh
Berichten: 3652
Uw commando betekent OHOME \u003d echo en terwijl die opdracht is ingevoerd, voert u het commando $ OHOME wat natuurlijk is geen geldig commando.

Voor het vastleggen van de output van een commando, stak het in backticks (96 ASCII, geen vaste rechte aanhalingstekens):

Code:
O_BASE=`echo $OHOME | awk -F"/" '{for(i=2;i<=NF;i++) {if($i=="product"){exit;} a=a"/"$i; }} '`
$ OHOME moet naar behoren worden tussen dubbele aanhalingstekens, leren dat nu en je krijgt minder verrassingen later (hoewel in dit geval niet echt een verschil maken).

Als uw reservoir $(...) in plaats van backticks `...` dat misschien beter leesbaar is, hoewel nominaal minder draagbaar tot legacy Bourne shell.

Uw awk script lijkt niet iets te doen met de een deel, als je bedoelt het vast te leggen, moet je het afdrukt.

Om strippen alles na het eerste exemplaar van /product / U kunt gebruik maken van variabele substitutie van de shell mechanisme:

Code:
O_BASE=${OHOME%/product/*}
(Uw awk script slaat de eerste component /aaa, Is dat opzettelijk? U kunt verwijderen die met een andere variabele substitutie, O_BASE \u003d $ (O_BASE # / aaa))

Laatst gewijzigd door tijdperk; op 08.28.2008 02:56 PM.. Reden: Variabel vervanging opmerkingen
  #3 (permalink)  
Old 08-28-2008
RockyC123 RockyC123 is offline
Geregistreerde gebruiker
  
 

Join Date: Feb 2008
Posten: 6
Ahhh .. Thanks a lot. Ik vergat de `s als ik het over gekopieerd van HP. Het werkt met zowel `` en $(..)

Uw tweede suggestie "O_BASE \u003d $ (OHOME% / product / *)" werkt perfect zonder alle extra's. Ik kan niet begrijpen dat een - de noodzaak om een goed boek dat syntaxis leren te krijgen.

Op het derde onderdeel, de manier waarop dit werkt is awk, neemt zij het deel voor de eerste schuine streep als een veld: "/ AAA / BBB / product / EEE". In deze, AAA is het tweede veld per awk en BBB is het derde veld.

Probleem opgelost. Thanks a lot for your help.
  #4 (permalink)  
Old 08-28-2008
buffoonix buffoonix is offline
Geregistreerde gebruiker
  
 

Join Datum: maart 2006
Posts: 145
Citaat:
Ik vergat de `s als ik het over gekopieerd van HP. Het werkt met zowel `` en $(..)
Ja, want HP-UX sh is een Posix shell. Zien man sh -POSIX te weten te komen over zijn capaciteiten.
Daarom moet u liever gebruik maken van de $(...) stijl als u niet van plan om het script te draaien
ongewijzigd op AIX of SunOS / sh Solaris '.
  #5 (permalink)  
Old 08-28-2008
wempy's Avatar
wempy wempy is online now
Geregistreerde gebruiker
  
 

Join Date: Jun 2006
Locatie: Harpenden, UK
Posts: 208
dit Referentie Kaarten aanhangsel van de Advanced Bash Scripting Guide (http://tldp.org/LDP/abs/html/) Is een zegen voor mij 'omdat ik nooit kan herinneren de juiste syntax voor string snijden.
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 11:29 PM.


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