![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| 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 |
| Asterisk på IPCop Asterisk 1.4.20 för IPCop 1.4.18 (Standard filial) | iBot | Programversionerna - RSS News | 0 | 05-21-2008 08:40 |
| Asterisk på IPCop Asterisk 1.4.19.2 för IPCop 1.4.18 (Standard filial) | iBot | Programversionerna - RSS News | 0 | 05-14-2008 07:20 |
| Asterisk på IPCop IPCop 1.4.18 med Asterisk 1.4.19.1 (Asterisk IPCop ISO filial) | iBot | Programversionerna - RSS News | 0 | 04-26-2008 04:10 |
| Asterisk på IPCop Asterisk 1.4.19.1 för IPCop 1.4.18 (Standard filial) | iBot | Programversionerna - RSS News | 0 | 04-25-2008 04:10 |
| passerar asterisk till ett script som variabel | GKnight | Shell-programmering och Skript | 9 | 04-02-2008 10:32 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hur kan man ignorera * (asterisk) i en variabel
Jag använder ett shell script för att läsa SQL uttalanden lagras i en DB2 tabellen och skriva ut dem till en fil. Mitt problem är att vissa SQL uttalanden har en "*" i dem som får lösas enligt en lista över filer i den aktuella katalogen när jag köra skriptet. Hur kan jag förhindra det "*" på väg?
Faktiska SQL: SELECT * FROM RTDS.TSPSTOPS Resultatsidor SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh FRÅN RTDS.TSPSTOPS Kodsträngen: sqlrow \u003d $ (DB2 + c-x hämta från c1) fetchrc \u003d $? echo fetchrc \u003d $ rc echo $ (sqlrow) |
|
||||
|
Citat:
|
|
||||
|
Min ursäkt för mitt exempel inte vara mycket tydlig. Den "faktiska SQL" visas i min OP är värdet att hämta återkommer i skalet variabeln "sqlrow". Eftersom den faktiska SQL har en "*" i det, när jag echo $ sqlrow det * blir löst och suppleanterna i listan över filer från den aktuella katalogen.
Så, duh, jag lyckades lösa det genom att sätta citationstecken runt Variabeln ekot som: echo "$ sqlrow" Nu tomten thickens lite. SQL lagras i ett varchar (32000) på källdatorn tabellen. När jag sätter citationstecken på eko jag nu få en post echo'd ut som 32000 bytes lång. (Den faktiska SQL uttalanden kommer att sträcka sig från 50-10000 bytes). Så jag vill inte skriva ut allt som extra utrymme på slutet av varje post. Jag kan få längden på sql, och jag är nu försöker substr det i awk enligt följande där $ rowlen innehåller längden på sql: sqltxt \u003d `echo" $ sqlrow "| awk '(print substr ($ 0,1, $ rl))' rl \u003d $ rowlen" Men jag är nu får meddelandet "awk: titelinformation" SELECT * F. .. " alltför lång tid " Vad är det bästa sättet för mig att antingen undertrycka de extra utrymmen på slutet av varje post eller substr de faktiska SQL? |
|
|||||
|
tr-s ""
kommer att kväva extra "" utrymme tecken Kod:
> line2="This 2spaces 3spaces 4and5after *" > echo "$line2" This 2spaces 3spaces 4and5after * > echo "$line2" | tr -s " " This 2spaces 3spaces 4and5after * |
|
||||
|
tack!
joeyg,
Tack för tipset om "TR" kommandot. Det gör vad jag behöver göra. precis som en FYI hade jag också kunnat röra runt och få "cut" för att arbeta eftersom jag hade ett uttalande längd finns, men jag tror att jag ska sticka med "tr" tack, bp |
|
||||
|
Citat:
Kod:
create table my_table
(sql_statement varchar(1000));
insert into my_table values ('select * from table2');
select sql_statement || '#' from my_table;
Kod:
SQL_STATEMENT||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. Kod:
select trim(sql_statement) || '#' from my_table; Kod:
TRIM(SQL_STATEMENT)||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. |