The UNIX and Linux Forums  


Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Asterisk om IPCop Asterisk 1.4.20 for IPCop 1.4.18 (Default filial) iBot Software Releases - RSS Nyheder 0 05-21-2008 09:40 PM
Asterisk om IPCop Asterisk 1.4.19.2 for IPCop 1.4.18 (Default filial) iBot Software Releases - RSS Nyheder 0 05-14-2008 08:20 AM
Asterisk om IPCop IPCop 1.4.18 med Asterisk 1.4.19.1 (Asterisk IPCop ISO filial) iBot Software Releases - RSS Nyheder 0 04-26-2008 05:10 AM
Asterisk om IPCop Asterisk 1.4.19.1 for IPCop 1.4.18 (Default filial) iBot Software Releases - RSS Nyheder 0 04-25-2008 05:10 PM
passerer asterisk til et script som variable GKnight Shell Programmering og Scripting 9 04-02-2008 11:32 AM

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 06-05-2008
bradtri2 bradtri2 is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 4
Sådan ignorere * (asterisk) i en variabel

Jeg bruger et shell script til at læse SQL opgørelser gemt på en DB2 bordet og skrive dem ud til en fil. Problemet jeg har er, at nogle SQL opgørelser har en "*" i dem, der bliver løst så listen over filer i det aktuelle bibliotek, når jeg kører scriptet. Hvordan kan jeg forhindre, at "*" fra at blive løst??

Faktiske SQL: SELECT * FRA RTDS.TSPSTOPS

Resultat SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh FRA RTDS.TSPSTOPS

Kodestykket:

sqlrow \u003d $ (DB2 + c-x hente fra c1)
fetchrc \u003d $?
echo fetchrc \u003d $ rc

echo $ (sqlrow)
  #2 (permalink)  
Old 06-05-2008
fabtagon fabtagon is offline
Registreret Bruger
  
 

Join Date: Apr 2008
Location: Den Europæiske Union / Tyskland
Posts: 189
Citat:
sqlrow \u003d $ (DB2 + c-x hente fra c1)
Nr. variable herinde \u003d> ingen ekspansion vil finde sted. Måske dit eksempel er for kort? Er du i virkeligheden har noget i retning af "x \u003d $ (DB2 $ var hentet fra c1)"? I dette tilfælde surround $ var med anførselstegn.
  #3 (permalink)  
Old 06-05-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home af 17-tiden verdensmester Boston Celtics
Stillinger: 1311
Wink Måske ud fra, hvad du forsøger at gøre, men ...


Code:
> line1="ls *"
> echo $line1
ls 50964hdr.txt bin cbin dead.letter greetings junk.tmp masters orictl sample tmp

Dette synes at være, hvad du var at henvise til


Code:
> echo "$line1"
ls *

denne 2. eksempel er, hvad jeg tror, du forsøger at få
  #4 (permalink)  
Old 06-05-2008
bradtri2 bradtri2 is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 4
Min undskyldning for mit eksempel ikke er meget klar. "Den faktiske SQL" vises i mine OP'et er den værdi, som de henter vil vende tilbage til råtanken variable "sqlrow". Da den faktiske SQL har en "*" i den, når jeg echo $ sqlrow, det * bliver løst, og erstatninger på listen over filer fra det aktuelle bibliotek.

Så duh, jeg var i stand til at løse dette ved at sætte dobbelte anførselstegn omkring variablen på echo gerne: echo "$ sqlrow"

Nu er plot thickens en smule. SQL er gemt på en varchar (32000) om kilden bordet. Da jeg satte dobbelte anførselstegn om echo, jeg nu får et rekordstort echo'd, at der er 32.000 bytes lange. (Den faktiske SQL opgørelser vil varierer fra 50 - 10000 bytes). Så jeg ønsker ikke at skrive alt det ekstra plads på slutningen af hver post.

Jeg kan få længden af SQL, og jeg nu forsøger at substr det i awk som følger, hvor $ rowlen indeholder længden af sql:

sqltxt \u003d `echo" $ sqlrow "| awk '(print substr ($ 0,1, $ rl))' rl \u003d $ rowlen«

Men jeg er nu at få budskabet "awk: record« SELECT * F. .. ' for lang tid "

Hvad er den bedste måde for mig at enten undertrykke ekstra mellemrum i slutningen af hver post eller substr de faktiske SQL??
  #5 (permalink)  
Old 06-05-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home af 17-tiden verdensmester Boston Celtics
Stillinger: 1311
Wink tr kommando

tr-s ""
vil undertrykke ekstra "" space charcters


Code:
> line2="This  2spaces   3spaces    4and5after     *"
> echo "$line2"
This  2spaces   3spaces    4and5after     *
> echo "$line2" | tr -s " "
This 2spaces 3spaces 4and5after *

  #6 (permalink)  
Old 06-06-2008
bradtri2 bradtri2 is offline
Registreret Bruger
  
 

Join Date: Jun 2008
Stillinger: 4
tak!

joeyg,
tak for tip om "tr" kommando. Det gør, hvad jeg har brug for det at gøre.

lige som en FYI, jeg var også i stand til griseri omkring og få de "cut"-kommando til at arbejde, da jeg havde den erklæring længde til rådighed, men jeg tror, jeg vil holde med "tr"

tak,
bp
  #7 (permalink)  
Old 06-05-2008
shew01 shew01 is offline
Registreret Bruger
  
 

Join Date: Dec 2007
Stillinger: 41
Citat:
SQL er gemt på en varchar (32000) om kilden bordet. Da jeg satte dobbelte anførselstegn om echo, jeg nu får et rekordstort echo'd, at der er 32.000 bytes lange.
Hvis kolonnen er defineret som varchar (32000), jeg forstår ikke, hvorfor du henter, hvad der synes at være fuld bredde kolonner. Jeg bruger Oracle i stedet for DB2, men princippet bør være den samme.


Code:
create table my_table
	(sql_statement varchar(1000));

insert into my_table values ('select * from table2');

select sql_statement || '#' from my_table;

Her er mit output:


Code:
SQL_STATEMENT||'#'
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select * from table2#

1 row selected.

Har du forsøgt at trimme produktionen som du vælger den fra DB2 database?


Code:
select trim(sql_statement) || '#' from my_table;

Output er det samme (dvs. at der ikke efterfølgende mellemrum for data), medmindre den lange række af bindestreger er at give dig et problem:


Code:
TRIM(SQL_STATEMENT)||'#'
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select * from table2#

1 row selected.

Closed Thread

Bogmærker

Tags
awk, awk trim, trim, trim awk

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 01:27 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0