shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bulk] Re: [shell-script] Re: Help! case dentro de for


From: Sidney Souza
Subject: Re: [Bulk] Re: [shell-script] Re: Help! case dentro de for
Date: Tue, 6 Oct 2015 09:09:27 -0300

Caro Hugo,

Visto que você deseja criar um menu para executar algo, que tal utilizar o comando select?

Veja aqui exemplos de como fazê-lo
http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_06.html

------------------------------------------------------
http://www.politicos.org.br

2015-10-05 13:25 GMT-03:00 'Julio C. Neves' address@hidden [shell-script] <address@hidden>:
 

Hugo, antes da linha

echo $nomevm|cut -d: -f$count|tr "\"" " "|cut -d" " -f2

experimente colocar:

echo -ne $((++ContaLinhas))'\t'

Ou troque toda a linha do echo por:

printf "%02d %10s\n" $((++ContaLinhas)) $(echo $nomevm|cut -d: -f$count|tr "\"" " "|cut -d" " -f2)

nesse caso, sem conhecer a saída do cmd arbitrei 10s mas basta aumentar ou diminuir esse número para afastar ou aproximar mais do sequencial

Abcs,
Julio
@juliobash

P
róximos cursos de Shell
Cidade         Local Período
Curitiba SoftSell 19/10 a 23/10
São Paulo 4Linux 07/12 a 11/12
Dou treinamento de Shell em qualquer cidade.
Para mais detalhes, me mande um e-mail.


Em 4 de outubro de 2015 15:22, Hugo Meireles address@hidden [shell-script] <address@hidden> escreveu:
 

Boa tarde mestres.
Após meia madrugada de sono, um prato de macarrão e vossas preciosas dicas, consegui +- o que gostaria:
Acabei trocando o case por um for para montar o menu + um read depois para rodar a vm....

#!/bin/bash

# Conta o numero total de VM's

totalvms=`vboxmanage list vms|wc -l`

# Variavel que irá receber o nome de todas VM's

nomevm=''

# Laço que monta a varíavel nomevm

for vms in $(vboxmanage list vms|sort|awk '{ print $1 }')
do 
nomevm=$nomevm:$vms
done
echo -n
echo -n "Lista das VM's disponíveis :"

# Monta menu com os nomes das VM's

for count in $(seq 1 $totalvms) 
do
echo $nomevm|cut -d: -f$count|tr "\"" " "|cut -d" " -f2
done

export nomevms

# Escolhe-se a VM
echo
echo -n "Digite a VM que quer iniciar em background : "
read vm

# Roda VM escolhida

vboxmanage startvm $vm --type headless
exit 0

Funcionou, porém tentei por o contador do segundo laço para numerar as VM's e não consegui me dar bem com o jogo de aspas/aspas duplas para proteger as variaveis... Com a numeração bastaria digitar o numero em vez do nome da VM, mas serviu por enquanto e me dou por satisfeito nesse primeiro hard teste que passei... kkkkkkkkkkkk
Vlw pelas dicas!!
[]'s



_____________________________________

Hugo Meireles
E-mail:   address@hidden 
Celular:   55 11 991047093
_____________________________________


Em 4 de outubro de 2015 02:59, Hugo Meireles <address@hidden> escreveu:
Olá mestres. Boa noite a todos.
Esse é meu primeiro post e o primeiro script q possa de fato ser considerado um script..., e gostaria de um help já que estou a quase 5 horas quebrando a cabeça.
A ideia é criar um menu onde eu possa escolher a VM que vai iniciar em background....
O intuito é aprender shell script e lógiva também, por isso dificultei logo no primeiro exercicio... rs

#!/bin/bash
nomevm=''
totalvms=`vboxmanage list vms|wc -l`
for vms in $(vboxmanage list vms|sort|awk '{ print $1 }')
do 
export nomevm=$nomevm:$vms
done
for menu in $(seq 1 $totalvms)
do
case $nomevm in
"`$nomevm|cut -d: -f$menu`")
vboxmanage startvm $nomevm --type headless
"`;;`"
done
*)
echo "Use iniciavm nome_da_vm"
esac
exit 0


O erro está aqui:

./iniciavm.sh: line 14: syntax error near unexpected token `done'
./iniciavm.sh: line 14: ` done'


Não sei se é o case dentro do for ou se é alguma aspas faltando... sei que tem algo com o ;; mas travou geral aqui....
Agradeço antecipadamente.
Att,
_________
_____________________________________

Hugo Meireles
E-mail:   address@hidden 
Celular:   55 11 991047093
_____________________________________





reply via email to

[Prev in Thread] Current Thread [Next in Thread]