![]() |
Hallo en welkom van de Verenigde Staten aan de UNIX en Linux Forum! Bedankt voor uw bezoek en Deelnemen aan onze wereldwijde gemeenschap.
|
|
google unix.com
|
|||||||
| Forums | Registreer | Forum Regels | Links | Albums | Veelgestelde vragen | Ledenlijst | Kalender | Zoeken | Today's Posts | Markeer forums als gelezen |
| 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 |
| Asterisk op IPCop Asterisk 1.4.20 voor IPCop 1.4.18 (Default branch) | iBot | Software releases - RSS Nieuws | 0 | 05-21-2008 08:40 PM |
| Asterisk op IPCop Asterisk 1.4.19.2 voor IPCop 1.4.18 (Default branch) | iBot | Software releases - RSS Nieuws | 0 | 05-14-2008 07:20 |
| Asterisk op IPCop IPCop 1.4.18 met Asterisk 1.4.19.1 (Asterisk IPCop ISO bijkantoor) | iBot | Software releases - RSS Nieuws | 0 | 04-26-2008 04:10 |
| Asterisk op IPCop Asterisk 1.4.19.1 voor IPCop 1.4.18 (Default branch) | iBot | Software releases - RSS Nieuws | 0 | 04-25-2008 04:10 PM |
| sterretje bij het passeren van een script als variabele | GKnight | Programmeren en Shell Scripting | 9 | 04-02-2008 10:32 |
![]() |
|
|
LinkBack | Thread Tools | Zoeken in deze Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Hoe te negeren * (sterretje) in een variabele
Ik gebruik een shell script te lezen SQL statements opgeslagen in een DB2-tabel en schrijft het naar een bestand. Het probleem dat ik heb is dat sommige SQL statements hebben een "*" in hen, die wordt opgelost als de lijst met bestanden in de huidige directory toen ik het script. Hoe kan ik voorkomen dat het "*" worden opgelost?
Werkelijke SQL: SELECT * FROM RTDS.TSPSTOPS Uitslag SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh UIT RTDS.TSPSTOPS Codefragment: sqlrow \u003d $ (db2 + c-x halen uit c1) fetchrc \u003d $? echo fetchrc \u003d $ rc echo $ () sqlrow |
|
||||
|
Citaat:
|
|
||||
|
Mijn excuses voor mijn voorbeeld niet erg duidelijk. De "werkelijke SQL" wordt weergegeven in mijn OP is de waarde die het ophalen zal terugkeren in de shell variabele sqlrow ". Aangezien de werkelijke SQL is een "*" in, als ik echo $ sqlrow, de * krijgt opgelost en substituten op de lijst van bestanden uit de huidige directory.
Ja, duh, ik was in staat op te lossen die door dubbele aanhalingstekens rond de variabele op de echo zoals: echo "$ sqlrow" Nu, de plot een beetje dikker. De SQL wordt opgeslagen in een varchar (32000) van de bron tabel. Wanneer ik de dubbele aanhalingstekens op de echo, ik nu een record echo'd dat is 32000 bytes lang. (De werkelijke SQL statements zal variëren van 50 tot 10000 bytes). Dus, ik wil niet schrijven al dat extra ruimte op het einde van elk record. Ik kan de lengte van de SQL, en ik ben nu proberen te substr in awk als volgt waarbij $ rowlen bevat de lengte van de SQL: sqltxt \u003d `echo" $ sqlrow "| awk '(print substr ($ 0,1, $ rl))' RL \u003d $ rowlen" Maar ik ben nu de boodschap "awk: record" SELECT * F. .. ' te lang " Wat is de beste manier voor mij om te onderdrukken of de extra ruimtes op het einde van elk record of substr de werkelijke SQL? |
|
|||||
|
tr-s ""
zal onderdrukken extra "" ruimte charcters Code:
> line2="This 2spaces 3spaces 4and5after *" > echo "$line2" This 2spaces 3spaces 4and5after * > echo "$line2" | tr -s " " This 2spaces 3spaces 4and5after * |
|
||||
|
Bedankt!
joeyg,
bedankt voor de tip over de "tr" commando. Het is te doen wat ik het nodig om te doen. net zoals een FYI, ik was ook in staat om rotzooi rond en de "cut krijgen" commando naar het werk, omdat ik de verklaring lengte beschikbaar was, maar ik denk dat ik stok met "tr" bedankt, bp |
|
||||
|
Citaat:
Code:
create table my_table
(sql_statement varchar(1000));
insert into my_table values ('select * from table2');
select sql_statement || '#' from my_table;
Code:
SQL_STATEMENT||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. Code:
select trim(sql_statement) || '#' from my_table; Code:
TRIM(SQL_STATEMENT)||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. |
![]() |
| Bladwijzers |
| Labels |
| awk, awk trim, trim, trim awk |
| Thread Tools | Zoeken in deze Thread |
| Display Modes | Beoordeel deze draad |
|
|