![]() |
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
| cp script erro, pls ajudar na depuração! | wrapster | UNIX & avançada para usuários experientes | 1 | 05-24-2008 08:12 |
| que um método é melhor para a depuração do script? | psiva_arul | UNIX & avançada para usuários experientes | 2 | 05-20-2008 06:33 |
| depuração um script? | wrapster | Programação Shell Script e | 2 | 03-25-2008 11:07 |
| FTP script | alfredo123 | Programação Shell Script e | 1 | 11-08-2006 01:22 |
| HP-UX Debugging Shell script | shihabvk | Programação Shell Script e | 1 | 04-24-2006 09:55 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
Nee ajudar depuração script plz ..
Estou tendo problemas w / o script. Menu não está chegando para pedir-me. Tenho trabalhado nele por dias e ainda não consigo ver o problema. Qualquer pessoa pode ajudar, eu agradeço. Possíveis problemas com a sintaxe e função chamadas.
Thks ... TMP \u003d $ tapemgr / rpts / tmp # TAPE MANAGER MENU PRINCIPAL enquanto: fazer apagar tapemgr_Main_Menu () ( echo "Tape Management System Menu" echo "Este sistema é utilizado para reportar Legato VRE Offsite e Tapes Devolveste" 1. BUR IPS Tape Offsite Relatório 2. BUR IPS TAPE Devolução de VRE q. Saia ou Ctrl-C echo "Selecione uma opção 1,2, q" leia opção opção em caso $ 1) Tapes_Offsite_Menu (); 2) Tapes_Return_Menu (); q) saída; esac feito ) Tapes_Offsite_Menu () ( echo "Selecione uma opção para Offsite Report - '(W)" eekly' (M) "onthly '(B)" OTH " leia opção opção em caso $ W) Weekly_Offsite (); M) Monthly_Offsite (); B) Both_Offsite (); x) tapemgr_Main_Menu (); esac ) Tapes_Return_Menu () ( echo "Tapes Retornar Menu" echo "Enter IPS fita" (V) olumes ou (D) ates a ser devolvido " echo "R - Retorno ao Menu Principal" no caso $ SEL V) Volume_Returns (); D) Volume_Date_Returns (); r) tapemgr_Main_menu (); esac ) Volume_Returns () ( echo "Enter Volumes de ser devolvidos", lê $ input mminfo volume \u003d $ q-1-q \u003d VRE localização | awk ( 'print $ 1') # If [location \u003d! "ERV"] e, depois, echo "não existe em volume VRE" # Fi ) Volume_Date_Returns () ( echo "Retorno de todos'" caducou "VRE fitas' (y / n)" " # Se $ 1 \u003d "y", então mminfo-q \u003d volrent expirou-q localização ERV-r \u003d volume, volretent, piscina | mais> $ TMP / vol.out echo "Será esta a lista correta lista das fitas para ser devolvido?" # Se $ 1 \u003d\u003d "y" e, em seguida, próximo echo "Insira data de fitas para ser devolvido" (dd / mm / yy ou entra hoje, ontem, na semana passada) ", deve ler-se 1 dólar # Se $ 1 \u003d? mminfo-volretent q \u003d $ 1-q localização ERV-r \u003d volume, volrent, piscina | mais $ TMP / vol.out # Fi ) # # Corre Offsite Relatório Semanal Weekly_Offsite () ( echo "$ dat brocas Semanal Offsite STK9310 Tape Relatório"> $ WOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Weekly"-q localização \u003d "STK9310">> $ WOFFSITE> $ EJECT_TAPES echo "Total SEMANAL Offsite IPS TAPES" | wc-l | $ WOFFSITE> $ OFFSITE_REPORT> $ EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # Corre Relatório Mensal Monthly_OffSite () ( echo "$ dat brocas Semanal Offsite STK9310 Tape Relatório"> $ MOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Mensal"-q localização \u003d "STK9310">> $ MOFFSITE> $ EJECT_TAPES echo "mensal total Offsite IP Tapes" | wc-l $ MOFFSITE> $ OFFSITE_REPORT> $ EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # # # Ambos ou qualquer Tapes externo que deve ser mensal ou semanal Both_Offsite () ( echo "$ dat brocas Qualquer Offsite STK9310 Tape Relatório"> $ BOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Mensal"-q localização \u003d "STK9310"> $ BOFFSITE> $ EJECT_TAPES mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Weekly"-q localização \u003d "STK9310">> $ BOFFSITE>> $ EJECT_TAPES echo "Total IPS Tapes vai Offsite" | wc-l $ BOFFSITE>> $ BOFFSITE>> EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # # Enviar Email Notificação EMAIL_NOTIFICATION () ( echo "mail função" ) # Criar arquivos TMP para cuting e colando TMP_FILES () ( cut-c1-8 $ EJECT_TAPES | tipo 1> $ TMP / eject_sort.out ) # FTP FILES AO SERVIDOR FTP_FILES () ( ftp-n $ FTP_HOST <<END_SCRIPT quote USER $ FTP_LOGIN quote PASS $ FTP_PWD END_SCRIPT ) -bash $ 2,05 |
|
||||
|
Ok, a primeira coisa é que você precisa para colocar o script completo. Você está faltando o início do script pois não vejo o #! / Bin / bash linha.
Segue-se utilizar o código tags para anexar o seu script para facilitar a leitura. Difícil dizer se é devido a um erro de transcrição ou apenas porque o software está excluindo espaços e colchetes. Seguinte Main_Menu é a função não está certo. Você tem o tempo, e claro que fora da função, em vez de dentro. Seguinte é que você não está ecoando as opções de menu. A função Volume_Date_Returns tem alguns falsos declaração se constrói. Eles são comentados, mas que deve ser corrigido se você estiver indo para usá-los. O resto parece basicamente ok. Não estou 100% de certeza sobre a forma como se você estiver usando declarações. I'm pretty certeza que você precisa para usar parênteses para encerrar o teste. Eu sempre gosto de fazer e verificar antes de se dizer com certeza. Não pode machucar a realidade entre parênteses anexar embora. Corrigido Main_Menu: Código:
tapemgr_Main_Menu()
{
while : do
clear
echo " Tape Management System Menu"
echo "This system is used to report Legato ERV Offsite and Tapes Returned"
echo "1. BUR IPS Tape Offsite Report"
echo "2. BUR IPS TAPE Returns from ERV"
echo "q. Quit or Ctrl-C"
echo "Select an option 1,2,q"
read option
case $option in
1) Tapes_Offsite_Menu();;
2) Tapes_Return_Menu();;
q) exit;;
esac
done
}
|
|
||||
|
Ainda está tendo problemas
Este é o erro Estou ficando abaixo .. agora é todo o script. Eu estou tendo a peicemeal o ensaio dela .. até posso figura sair tudo. Obrigado por anyhelp você pode ajudar com.
tapemgr_Main_Menu () ( enquanto: fazer echo "Legato Tape Management System Menu" echo "Este sistema é utilizado para reportar Legato VRE Offsite e Tapes Devolveste" echo "1. BUR IPS Tape Offsite Report" echo "2. BUR IPS TAPE Devolução de VRE" echo "q. Saia ou Ctrl-C" echo "Selecione uma opção 1,2, q" leia opção opção em caso $ 1) Tapes_Offsite_Menu (); 2) Tapes_Return_Menu (); q) saída; esac feito tapemgr.sh: Erro de sintaxe na linha 41: `done 'inesperado -bash $ 2,05 Toda a script após a sua correcção ... # Tape Manager Menu para Legato IPS tutelada para Offsite Retorno e fitas # #! / bin / bash # # Defing todas as variáveis set-x rm-i $ tapemgr / rpts / *.* dat \u003d `date +"% b% y "` tapemgr \u003d "/ export / home / legato / tapemgr" ERVTAPE_RET \u003d $ tapemgr / rpts / ervtape_ret. $ Dat ERVTAPE_ALOC \u003d $ tapemgr / rpts / tmp / ervtape__aloc MOFFSITE \u003d $ tapemgr / rpts / externo / Mthly_Offsite.rpt. $ Dat WOFFSITE \u003d $ tapemgr / rpts / externo / Wkly_Offsite.rpt. $ Dat BOFFSITE \u003d $ tapemgr / rpts / externo / Both_Offsite.rpt. $ Dat EMAIL_NOTICE \u003d $ tapemgr / rpts / email.rpt $ dat FTP_HOST \u003d 'xxx' FTP_LOGIN \u003d 'xxx' FTP_PWD \u003d 'xxx' EJECT_TAPES \u003d $ tapemgr / rpts / tmp / eject_tapes.out TMP \u003d $ tapemgr / rpts / tmp # TAPE MANAGER MENU PRINCIPAL apagar tapemgr_Main_Menu () ( enquanto: fazer echo "Legato Tape Management System Menu" echo "Este sistema é utilizado para reportar Legato VRE Offsite e Tapes Devolveste" echo "1. BUR IPS Tape Offsite Report" echo "2. BUR IPS TAPE Devolução de VRE" echo "q. Saia ou Ctrl-C" echo "Selecione uma opção 1,2, q" leia opção opção em caso $ 1) Tapes_Offsite_Menu (); 2) Tapes_Return_Menu (); q) saída; esac feito ) Tapes_Offsite_Menu () ( enquanto: fazer echo "Selecione uma opção para Offsite Report - '(W)" eekly' (M) "onthly '(B)" OTH " leia opção opção em caso $ W) Weekly_Offsite (); M) Monthly_Offsite (); B) Both_Offsite (); x) tapemgr_Main_Menu (); esac feito ) Tapes_Return_Menu () ( enquanto: fazer echo "Tapes Retornar Menu" echo "Enter IPS fita" (V) olumes ou (D) ates a ser devolvido " echo "R - Retorno ao Menu Principal" no caso $ SEL V) Volume_Returns (); D) Volume_Date_Returns (); r) tapemgr_Main_menu (); esac feito ) Volume_Returns () ( echo "Enter Volumes de ser devolvidos", lê $ input mminfo volume \u003d $ q-1-q \u003d VRE localização | awk ( 'print $ 1') # If [location \u003d! "ERV"] e, depois, echo "não existe em volume VRE" # Fi ) Volume_Date_Returns () ( echo "Retorno de todos'" caducou "VRE fitas' (y / n)" " # Se $ 1 \u003d "y", então mminfo-q \u003d volrent expirou-q localização ERV-r \u003d volume, volretent, piscina | mais> $ TMP / vol.out echo "Será esta a lista correta lista das fitas para ser devolvido?" # Se $ 1 \u003d\u003d "y" e, em seguida, próximo echo "Insira data de fitas para ser devolvido" (dd / mm / yy ou entra hoje, ontem, na semana passada) ", deve ler-se 1 dólar # Se $ 1 \u003d? mminfo-volretent q \u003d $ 1-q localização ERV-r \u003d volume, volrent, piscina | mais $ TMP / vol.out # Fi ) # # Corre Offsite Relatório Semanal Weekly_Offsite () ( echo "$ dat brocas Semanal Offsite STK9310 Tape Relatório"> $ WOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Weekly"-q localização \u003d "STK9310">> $ WOFFSITE> $ EJECT_TAPES echo "Total SEMANAL Offsite IPS TAPES" | wc-l | $ WOFFSITE> $ OFFSITE_REPORT> $ EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # Corre Relatório Mensal Monthly_OffSite () ( echo "$ dat brocas Semanal Offsite STK9310 Tape Relatório"> $ MOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Mensal"-q localização \u003d "STK9310">> $ MOFFSITE> $ EJECT_TAPES echo "mensal total Offsite IP Tapes" | wc-l $ MOFFSITE> $ OFFSITE_REPORT> $ EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # # # Ambos ou qualquer Tapes externo que deve ser mensal ou semanal Both_Offsite () ( echo "$ dat brocas Qualquer Offsite STK9310 Tape Relatório"> $ BOFFSITE mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Mensal"-q localização \u003d "STK9310"> $ BOFFSITE> $ EJECT_TAPES mminfo-r volume, volretent, piscina, piscina de localização q \u003d "COE Full Offsite Weekly"-q localização \u003d "STK9310">> $ BOFFSITE>> $ EJECT_TAPES echo "Total IPS Tapes vai Offsite" | wc-l $ BOFFSITE>> $ BOFFSITE>> EMAIL_NOTICE TMP_FILES () FTP_FILES () EMAIL_NOTIFICATION () ) # # # Enviar Email Notificação EMAIL_NOTIFICATION () ( echo "mail função" # mailx-s "$ dat brocas-Offsite IPS Tape Relatório" <$ EMAIL_NOTICE am001111@eds.com kathe.flanigan @ eds.com ) # Criar arquivos TMP para cuting e colando TMP_FILES () ( cut-c1-8 $ EJECT_TAPES | tipo 1> $ TMP / eject_sort.out ) # FTP FILES AO SERVIDOR FTP_FILES () ( ftp-n $ FTP_HOST <<END_SCRIPT quote USER $ FTP_LOGIN quote PASS $ FTP_PWD END_SCRIPT ) -bash $ 2,05 |
|
||||
|
Ok, um passo. Utilize o código tags. Quando você vai para criar uma mensagem e você estiver incluindo um script, clique sobre a marca no hash Meny acima da nova mensagem e, em seguida, incluir o seu código.
Há um par de problemas em seu script. 1. Não chame funções com a cauda parens. É falhar. 2. Não use ':' como o seu teste declaração. Trata-se obras de declarações, mas não enquanto declarações. 3. Não ponha tarefas na variável definições seção. Ela pode ficar confusa. Mudei o rm declaração fora, especialmente desde que você está tentando excluir antes o caminho variável foi atribuída. 4. O script teria executado, mas não teria apresentado um menu. Trata-se de todas as funções. Em algum lugar fora das funções que você precisa para executar a primeira função. Eu adicionei os comandos no final do script. Têm de ser após as funções são definidas ou você recebe um "não sei o que você está falando" tipo de erro. Eu já incluído o script que você forneceu. Eu indentados, acrescentou algumas linhas extra e espaços, e feitas as correcções necessárias. I've destacadas as principais alterações em vermelho. Em particular, gosto de ter espaço extra entre, por exemplo, os dados e abrir paren em caso blocos ou entre o comando eo duplo ponto e vírgula. É apenas o torna mais fácil de ler, para mim, pelo menos. E é preciso lembrar que haverá alguém atrás de você tentar compreender o que estava fazendo. Além disso, eu não passar por toda a coisa certa a fazer tudo estava funcionando. Eu fiz encontrar uma falta ler linha (destacadas no roteiro), mas pode haver outros erros. Sinta-se livre para perguntar novamente se você ainda está tendo problemas. Carl Código:
# Tape Manager Menu for Legato IPS Reporting for Offsite and Return tapes
#
#!/bin/bash
#
# Defing all variables
set -x
dat=`date +"%b%y"`
tapemgr="/export/home/legato/tapemgr"
ERVTAPE_RET=$tapemgr/rpts/ervtape_ret.$dat
ERVTAPE_ALOC=$tapemgr/rpts/tmp/ervtape__aloc
MOFFSITE=$tapemgr/rpts/offsite/Mthly_Offsite.rpt.$dat
WOFFSITE=$tapemgr/rpts/offsite/Wkly_Offsite.rpt.$dat
BOFFSITE=$tapemgr/rpts/offsite/Both_Offsite.rpt.$dat
EMAIL_NOTICE=$tapemgr/rpts/email.rpt$dat
FTP_HOST='xxx'
FTP_LOGIN='xxx'
FTP_PWD='xxx'
EJECT_TAPES=$tapemgr/rpts/tmp/eject_tapes.out
TMP=$tapemgr/rpts/tmp
# TAPE MANAGER MAIN MENU
tapemgr_Main_Menu()
{
while true
do
echo "Legato Tape Management System Menu"
echo "This system is used to report Legato ERV Offsite and Tapes Returned"
echo "1. BUR IPS Tape Offsite Report"
echo "2. BUR IPS TAPE Returns from ERV"
echo "q. Quit or Ctrl-C"
echo "Select an option 1,2,q"
read option
case $option in
1 ) Tapes_Offsite_Menu ;;
2 ) Tapes_Return_Menu ;;
q ) exit ;;
esac
done
}
Tapes_Offsite_Menu()
{
while true
do
echo "Select an option for Offsite Report - '(W)'eekly '(M)'onthly '(B)'oth"
read option
case $option in
W ) Weekly_Offsite ;;
M ) Monthly_Offsite ;;
B ) Both_Offsite ;;
x ) tapemgr_Main_Menu ;;
esac
done
}
Tapes_Return_Menu()
{
while true
do
echo "Tapes Return Menu"
echo "Enter IPS tape '(V)olumes or (D)ates to be returned'"
echo "R - Return to Main Menu"
read SEL
case $SEL in
V ) Volume_Returns ;;
D ) Volume_Date_Returns ;;
r ) tapemgr_Main_menu ;;
esac
done
}
Volume_Returns()
{
echo "Enter Volumes to be returned", read $input
mminfo -q volume=$1 -q location=ERV | awk {'print $1'}
# if [location =! "ERV" ]; then
echo " volume does not exist at ERV"
# fi
}
Volume_Date_Returns()
{
echo "Return of all '"expired"' ERV tapes '(y/n)'"
# if $1 = "y", then
mminfo -q volrent=expired -q location=ERV -r volume,volretent,pool | more > $TMP/vol.out
echo " Is this list the correct list of tapes to be returned?"
# if $1 == "y", then next
echo "Enter date of tapes to be returned '(mm/dd/yy or enter today, yesterday, last week)'", read $1
# if $1 = ??
mminfo -q volretent=$1 -q location=ERV -r volume, volrent,pool |more $TMP/vol.out
# fi
}
## Run Weekly Offsite Report
Weekly_Offsite()
{
echo "$dat BURS Weekly Offsite STK9310 Tape Report " > $WOFFSITE
mminfo -r volume,volretent,pool,location -q pool="COE Full Offsite Weekly" -q location="STK9310" >> $WOFFSITE >$EJECT_TAPES
echo "Total WEEKLY OFFSITE IPS TAPES " | wc -l | $WOFFSITE > $OFFSITE_REPORT >$EMAIL_NOTICE
TMP_FILES
FTP_FILES
EMAIL_NOTIFICATION
}
## Run Monthly Report
Monthly_OffSite()
{
echo "$dat BURS Weekly Offsite STK9310 Tape Report " > $MOFFSITE
mminfo -r volume,volretent,pool,location -q pool="COE Full Offsite Monthly" -q location="STK9310" >> $MOFFSITE >$EJECT_TAPES
echo "TOTAL Monthly Offsite IP Tapes" | wc -l $MOFFSITE > $OFFSITE_REPORT > $EMAIL_NOTICE
TMP_FILES
FTP_FILES
EMAIL_NOTIFICATION
}
#### Both or Any Tapes that should be offsite Monthly or Weekly
Both_Offsite()
{
echo "$dat BURS Any Offsite STK9310 Tape Report " > $BOFFSITE
mminfo -r volume,volretent,pool,location -q pool="COE Full Offsite Monthly" -q location="STK9310" > $BOFFSITE >$EJECT_TAPES
mminfo -r volume,volretent,pool,location -q pool="COE Full Offsite Weekly" -q location="STK9310" >> $BOFFSITE >>$EJECT_TAPES
echo " Total IPS Tapes going Offsite" | wc -l $BOFFSITE >> $BOFFSITE >> EMAIL_NOTICE
TMP_FILES
FTP_FILES
EMAIL_NOTIFICATION
}
### Send Email Notification
EMAIL_NOTIFICATION()
{
echo "mail function"
# mailx -s "$dat BURS-Offsite IPS Tape Report" < $EMAIL_NOTICE am001111@eds.com kathe.flanigan@eds.com
}
# Create TMP Files for cuting and pasting
TMP_FILES()
{
cut -c1-8 $EJECT_TAPES | sort +1 > $TMP/eject_sort.out
}
# FTP FILES TO HOST SERVER
FTP_FILES()
{
ftp -n $FTP_HOST << END_SCRIPT
quote USER $FTP_LOGIN
quote PASS $FTP_PWD
END_SCRIPT
}
clear
rm -i $tapemgr/rpts/*.*
tapemgr_Main_Menu
exit 0
#bash-2.05$
|
|
||||
|
Carl,
até agora eu tenho o menu do trabalho. Agradeço-te .. Estou certo de que irá precisar de mais ajuda, mas vai ter que testar cada função como um fragmentada. Eu sou apenas um novato, mas eu ainda estou aprendendo. Obrigado novamente .. você em breve ela de mim também. |
|
||||
|
Script problema .. Se precisar de ajuda extra para depurar os olhos ..
Carl, você pode ver onde eu estou tendo "bug" no caso declarações .. eu tenho algum tipo de erro de sintaxe e não pode ver onde ele está .. estou usando bash
Gostaria de redirecionar minha saída para a norma, bem como para um arquivo. Obrigado por sua ajuda. Volume_Returns () ( echo "Enter Volumes de ser devolvidos", lê entrada; echo $ input mminfo-q volume \u003d $ input-r volume, localização, piscina, volretent> $ 1 echo "Isto é o volume que você gostaria de voltar" ler resposta if [$ resposta \u003d y]; então echo "Por favor, devolva o seguimento fitas $ 1"> $ RETURN_REQUEST diferente echo "resposta incorreta" saída fi ) Volume_Date_Returns () ( echo "Retorno de todos'" caducou "VRE fitas' (y / n)" " if [$ resposta \u003d y]; então mminfo-q \u003d volrent expirou-q localização ERV-r \u003d volume, volretent, pool & 1> $ TMP / vol.out echo "Será esta a lista correta lista das fitas para ser devolvido?" if [$ resposta \u003d "y"], em seguida, echo "Lista será enviado para você" fi if [$ resposta \u003d "n"]; então echo "Insira data de fitas para ser devolvido" (dd / mm / yy ou entrar (T) oday, (Y) esterday, (L) ast semana) " leia datas mminfo-q volretent \u003d '$ dates'-q localização ERV-r \u003d volume, volrent, piscina | mais $ TMP / vol.out fi ) [QUOTE \u003d gzs553] Carl, até agora eu tenho o menu do trabalho. Agradeço-te .. Estou certo de que irá precisar de mais ajuda, mas vai ter que testar cada função como um fragmentada. Eu sou apenas um novato, mas eu ainda estou aprendendo. Obrigado novamente .. você em breve ela de mim também. [/ QUOT |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|