The UNIX and Linux Forums  

Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Asterisk su IPCop Asterisk 1.4.20 per IPCop 1.4.18 (Default succursale) iBot Software Uscite - RSS News 0 05-21-2008 09:40 PM
Asterisk su IPCop Asterisk 1.4.19.2 per IPCop 1.4.18 (Default succursale) iBot Software Uscite - RSS News 0 05-14-2008 08:20 AM
Asterisk su IPCop IPCop 1.4.18 con Asterisk 1.4.19.1 (Asterisk IPCop ISO succursale) iBot Software Uscite - RSS News 0 04-26-2008 05:10 AM
Asterisk su IPCop Asterisk 1.4.19.1 per IPCop 1.4.18 (Default succursale) iBot Software Uscite - RSS News 0 04-25-2008 05:10 PM
passando ad un asterisco script come variabile GKnight Shell scripting e di programmazione 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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 06-05-2008
bradtri2 bradtri2 is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Interventi: 4
Come ignorare * (asterisco) in una variabile

Sto usando uno script di shell per leggere le dichiarazioni di SQL memorizzati in una tabella DB2 e scrivere fuori a un file. Il problema è che ho alcune dichiarazioni SQL hanno un "*" che in essi viene risolto in quanto l'elenco dei file contenuti nella directory corrente quando ho eseguito lo script. Come faccio a impedire il "*" da una soluzione?

Actual SQL: SELECT * FROM RTDS.TSPSTOPS

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

Frammento di codice:

sqlrow \u003d $ (db2 + c-x scaricare da c1)
fetchrc \u003d $?
echo fetchrc \u003d $ rc

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

Iscriviti Data: aprile 2008
Ubicazione: Unione Europea / Germania
Interventi: 189
Citazione:
sqlrow \u003d $ (db2 + c-x scaricare da c1)
N. variabile qui \u003d> espansione non si svolgerà. Forse il vostro esempio è troppo breve? Vi sono in realtà qualcosa di simile "x \u003d $ ($ var db2 scaricare da c1)"? In questo caso la circondano $ var con virgolette.
  #3 (permalink)  
Old 06-05-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Iscriviti Data: dicembre 2007
Location: Home di 17-volte campione del mondo Boston Celtics
Interventi: 1.311
Wink Forse fuori da quello che si sta tentando di fare, ma ...


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

questo sembra essere ciò che si riferivano a


Codice:
> echo "$line1"
ls *

2a questo esempio è quello che penso che si sta tentando di ottenere
  #4 (permalink)  
Old 06-05-2008
bradtri2 bradtri2 is offline
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Interventi: 4
Mi scuso per il mio esempio non è molto chiaro. La "Reale SQL" mostrato nella mia OP è il valore che il fetch ritorna nella variabile di shell "sqlrow". Poiché l'attuale SQL ha un "*" in essa, quando ho echo $ sqlrow, l'* viene risolto e sostituti nella lista dei file dalla directory corrente.

Quindi, duh, sono stato in grado di risolvere tale da mettere tra virgolette doppie la variabile su come l'eco: echo "$ sqlrow"

Ora, la trama un po 'densa. SQL è memorizzato in un varchar (32000) sulla tabella di origine. Quando ho messo le virgolette sulla eco, ora ottenere un record echo'd che è lungo 32000 bytes. (L'attuale SQL va da 50 - 10.000 byte). Quindi, non voglio scrivere tutto quello che di spazio alla fine di ciascun record.

Sono in grado di ottenere la lunghezza del sql, e ora sto cercando di substr in awk come segue dove $ rowlen contiene la lunghezza del sql:

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

Tuttavia, ora sto ottenendo il messaggio "awk: record» SELECT * F. .. ' troppo a lungo "

Qual è il modo migliore per me sia per reprimere gli spazi alla fine di ciascun record o per l'effettiva substr SQL?
  #5 (permalink)  
Old 06-05-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Iscriviti Data: dicembre 2007
Location: Home di 17-volte campione del mondo Boston Celtics
Interventi: 1.311
Wink tr comando

tr-s ""
eliminerà extra "" spazio charcters


Codice:
> 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
Utente Registrato
  
 

Iscriviti Data: giugno 2008
Interventi: 4
grazie!

joeyg,
grazie per il suggerimento in merito alla "tr" comando. Si tratta di fare ciò che ho bisogno di fare.

proprio come uno fyi, sono stato anche in grado di disordine e di ottenere circa il "taglio" per il lavoro da quando ho avuto la dichiarazione lunghezza disponibile, ma credo I'll stick con "tr"

grazie,
pb
  #7 (permalink)  
Old 06-05-2008
shew01 shew01 is offline
Utente Registrato
  
 

Iscriviti Data: dicembre 2007
Interventi: 41
Citazione:
SQL è memorizzato in un varchar (32000) sulla tabella di origine. Quando ho messo le virgolette sulla eco, ora ottenere un record echo'd che è lungo 32000 bytes.
Se la colonna è definita come varchar (32000), non capisco il motivo per cui desideri recuperare ciò che appare essere la piena larghezza colonne. Sto utilizzando Oracle invece di DB2, ma il principio dovrebbe essere lo stesso.


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

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

select sql_statement || '#' from my_table;

Qui è la mia uscita:


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

1 row selected.

Hai provato a taglio della produzione, come si seleziona dal database DB2?


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

Il risultato è lo stesso (cioè, non di spazi per i dati), a meno che la lunga serie di trattini si sta dando un problema:


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

1 row selected.

Closed Thread

Segnalibri

Tag
awk, awk trim, trim, trim awk

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 06:07 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0