![]() |
|
|
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 |
| Vad kommandot att ta reda på postlängd på en fast längd fil? | tranq01 | UNIX for Dummies Frågor & Svar | 9 | 12-04-2008 04:04 |
| Debian: Ny yarssr paket fastställa godtyckliga skalkommando | iBot | Säkerhetsbulletiner (RSS) | 0 | 01-28-2008 10:20 |
| Vilken är den maximala längden på th os-kommandoraden i Unix. | kumardesai | UNIX for Dummies Frågor & Svar | 2 | 11-28-2007 07:37 |
| Hur du tar i variabler / parametrar från kommandoraden? | avisram | UNIX for Dummies Frågor & Svar | 1 | 07-21-2005 10:47 |
| passerar kommandoradsflaggor parametrar till funktioner - sh | vino | Shell-programmering och Skript | 5 | 03-05-2005 05:51 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Bygga kommandoradsflaggor parametrar för godtycklig längd
Jag kunde inte hitta en befintlig tråd som behandlade denna fråga, så förhoppningsvis så inte överflödigt med något tidigare utsänd. Here goes:
Jag skriver en c-shell script som kör ett program som tar ett godtyckligt antal parametrar: myprog en file1 \ -b fil2 \ -C fil3 ... \ -n filen \ -operation "a + b + c +...+ n" Filerna som myprog är verksam i underkataloger: 01/01.ext, 02/02.ext, ... etc. Eftersom filnamn råkar matcha katalogen namn skulle jag vilja kunna passera skriptet ett godtyckligt antal kataloger (i praktiken kommer det att finnas färre än 26, så det finns ingen oro på att ta slut "-x" tags ). Skriptet skulle sedan konstruera argumentet listan för myprog så att myscript.sh 01 02 03 ... 12 skulle expandera till: myprog-en 01/01.ext-b 02/02.ext ... -k 11/11.ext-l 12/12.ext \ -operation "a + b + c +...+ k + l" Finns det ett enkelt sätt att göra detta? |
|
||||
|
Kod:
#!/bin/sh
echo $1 |
awk 'BEGIN {
n="abcdefghijklmnopqrstuvwxyz"
printf("myprog")}
{ for (i=1;i<=$0;i++) {
printf(" -%s %02d/%02d.ext", substr(n,i,1), i, i)
op=op substr(n,i,1)"+"
}
op=substr(op,1,length(op)-1)
printf(" -operation \"%s\"\n",op)
}'
Ett värde räcker. Hälsningar |