The UNIX and Linux Forums  


Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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

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ök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 11-19-2007
cmcnorgan cmcnorgan is offline
Registered User
  
 

Join Date: Nov 2007
Plats: London, Ontario, Kanada
Inlägg: 2
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?
  #2 (permalänk)  
Old 11-19-2007
Smiling Dragon's Avatar
Smiling Dragon Smiling Dragon is offline Forum Advisor  
Oorganiserad User
  
 

Join Date: Nov 2007
Plats: Nya Zeeland
Inlägg: 922
Post

oprövade men det borde hjälpa dig ganska nära
Kod:
#!/bin/sh
if [ $# -gt 26 ]
then
   echo "Too many args!"
   exit 1
fi

letters="a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z"
cli="myprog"
count=1
operation=""
for argument in $*
do
   count=`expr $count + 1`
   letter=`echo $letters | head +$count | tail -1`
   cli="$cli -$letter ${argument}/${argument}.ext"
   if [ -z "$operation" ]
   then
      operation=$letter
   else
      operation="${operation}+${letter}"
   fi
done
cli="$cli -operation \"$operation\""
$cli
  #3 (permalänk)  
Old 11-20-2007
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.322
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)
}'
Användning: "scriptname 5" istället för "scriptname 01 ... 05".

Ett värde räcker.

Hälsningar
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 06:11.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0