The UNIX and Linux Forums  

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Qual o comando para descobrir o registro de um determinado comprimento de comprimento arquivo? tranq01 UNIX para Dummies Perguntas & Respostas 9 12-04-2008 04:04
Debian: New yarssr pacotes correção arbitrária comando iBot Alertas de Segurança (RSS) 0 01-28-2008 10:20
qual é o comprimento máximo de th-os na linha de comando Unix. kumardesai UNIX para Dummies Perguntas & Respostas 2 11-28-2007 07:37
Como você ter em variáveis / parâmetros da linha de comando? avisram UNIX para Dummies Perguntas & Respostas 1 07-21-2005 10:47
passar parâmetros de linha de comando para funções - sh vino Programação Shell Script e 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 Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 11-19-2007
cmcnorgan cmcnorgan is offline
Usuário
  
 

Join Date: Nov 2007
Localização: London, Ontario, Canadá
Posts: 2
Construção da linha de comando parâmetros de comprimento arbitrário

Eu não poderia encontrar uma discussão já existente que abordou esta questão, por isso espero que isto não é nada redundante com postados anteriormente. Aqui vai:

Estou escrevendo um C-script que executa um programa que tem um número arbitrário de parâmetros:

myprog-um ficheiro1 \
ficheiro2-b \
ficheiro3-c ... \
-n filen \
-operação "a + b + c +...+ n"


Os processos em que são myprog opera em subdiretórios: 01/01.ext, 02/02.ext, ... etc

Desde o filenames acontecer para coincidir com o directório nomes, gostaria de ser capaz de passar o script um número arbitrário de diretórios (na prática, haverá menos de 26, portanto, não há preocupação com a esgotar-se de "-x" tags ). O script poderia então construir o argumento para a lista myprog para que
myscript.sh 01 02 03 ... 12
ia expandir em:
myprog-um 01/01.ext-b 02/02.ext ... 11/11.ext-k-l 12/12.ext \
-operação "a + b + c +...+ k + l"


Existe uma maneira simples de fazer isso?
  #2 (permalink)  
Old 11-19-2007
Smiling Dragon's Avatar
Sorridente Dragão Smiling Dragon is offline Forum Advisor  
Desorganizada Usuário
  
 

Join Date: Nov 2007
Localização: Nova Zelândia
Lugares: 922
Post

testado, mas deve-te muito perto

Código:
#!/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 (permalink)  
Old 11-20-2007
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.346

Código:
#!/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)
}'

Utilização: "scriptname 5" em vez de "scriptname 01 ... 05".

Um valor suficiente.

Atenciosamente
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 08:36.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0