The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Bash Shell att sh tankskalet i ett Script saurabh84g Shell-programmering och Skript 8 08-29-2008 06:51
olika skal csh bash ajp7701 Shell-programmering och Skript 1 04-18-2008 05:19
c skal istället för bash ajp7701 Shell-programmering och Skript 0 03-18-2008 04:15
Bash Shell BG_JrAdmin Linux 1 08-07-2006 02:56
Bash skal ... VijayHegde Shell-programmering och Skript 2 06-06-2006 09: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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-28-2008
RockyC123 RockyC123 is offline
Registered User
  
 

Join Date: februari 2008
Inlägg: 6
bash shell rörsystem

Hej alla,

Jag är ny på bash. Jag försöker få en sub sträng med en variabel i ett shell script. Vid försöket att göra att jag får följande felmeddelande:

-------------------------------------------------- ----------------------
OHOME: / aaa / bbb / produkt / eee
. / t.sh: line 6: / aaa / bbb / produkt / eee: Ingen sådan fil eller katalog
Oracle Base:
-------------------------------------------------- ----------------------

Här är koden:

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

OHOME \u003d / aaa / bbb / produkt / eee
echo "OHOME:" $ OHOME

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

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

Jag är mycket förvånad. Eftersom det inte verkar som "echo $ OHOME" Jag försökte flera saker som omger inom parentes, enkel / citationstecken, etc. jag fortfarande få den här misstag. Jag kan inte hitta syntaxen från boken eller google

Ser väldigt enkelt, men jag fastnat på denna i timmar. Kanske experter Här kan vägleda mig.

Här är våra Linux-version:

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

Rocky.
  #2 (permalänk)  
Old 08-28-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
Ditt kommando innebär OHOME \u003d echo och när det uppdraget är på plats, kör kommandot $ OHOME vilket naturligtvis inte är ett giltigt kommando.

Att fånga utdata från ett kommando, sätta den i baklängescitationstecken (ASCII 96, inte vanliga rakt citattecken):


Kod:
O_BASE=`echo $OHOME | awk -F"/" '{for(i=2;i<=NF;i++) {if($i=="product"){exit;} a=a"/"$i; }} '`

$ OHOME lämpligen bör inom citationstecken, veta att nu och du får färre överraskningar senare (även om det i detta fall inte egentligen gör någon skillnad).

Om ditt skal tillåter $(...) stället för baklängescitationstecken `...` som kanske är mer lättläst, även om nominellt mindre portabla till arvet Bourne shell.

Din awk script verkar inte göra något med en del, om du menar fånga den, måste du skriva ut det.

Att skala bort allt efter den första förekomsten av /produkt / Du kan använda skalet är den rörliga ersättningen mekanism:


Kod:
O_BASE=${OHOME%/product/*}

(Din awk skript hoppar den första komponenten /aaa, Är det avsiktligt? Du kan ta bort det med en annan variabel substitution, O_BASE \u003d $ (O_BASE # / AAA))

Senast redigerad av era; 08-28-2008 vid 03:56.. Orsak: Varierande substitution kommentarer
  #3 (permalänk)  
Old 08-28-2008
RockyC123 RockyC123 is offline
Registered User
  
 

Join Date: februari 2008
Inlägg: 6
Ahhh .. Tack så mycket. Jag glömde `s när jag kopierade över från HP. Det fungerar med både `` och $(..)

Er andra förslag "O_BASE \u003d $ (OHOME% / produkt / *)" fungerar perfekt utan alla extra. Jag kan inte förstå att man - behöver få en bra bok att lära sig att syntax.

På den tredje delen, hur denna awk verk är, utgår den delen före första snedstrecket som ett fält: "/ aaa / bbb / produkt / EEE". I denna, är aaa det andra fältet per awk och BBB är det tredje fältet.

Problemet har lösts. Tack för din hjälp.
  #4 (permalänk)  
Old 08-28-2008
buffoonix buffoonix is offline
Registered User
  
 

Join Date: mars 2006
Inlägg: 145
Citat:
Jag glömde `s när jag kopierade över från HP. Det fungerar med både `` och $(..)
Ja, eftersom HP-UX s sh är en Posix skal. Se Mannen sh -POSIX ta reda på dess kapacitet.
Därför bör du använda snarare $(...) stil om du inte tänker köra skriptet
oförändrade under AIX-eller SunOS / Solaris "sh.
  #5 (permalänk)  
Old 08-28-2008
wempy's Avatar
wempy wempy is offline
Registered User
  
 

Join Date: juni 2006
Ort: Harpenden, UK
Inlägg: 208
den här Referens-kort apendix från Advanced Bash Scripting Guide (http://tldp.org/LDP/abs/html/) Har varit en välsignelse för mig "för jag kan aldrig minnas korrekt syntax för sträng skivning.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 06:01.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0