AprendiNoLinux
(usa Ubuntu)
Enviado em 15/08/2011 - 08:06h
Olá shelleiros.
Estou tentando testar este Script:
http://www.vivaolinux.com.br/topico/Shell-Script/Shell-Script-bash-pega-IP-de-sua-maquina-na-NET-[DN... em Zsh
Aparentemente a instalação do Zsh foi ok.
Onde estou errando ?
1 - mudei o cabeçalho que estava com #!/bin/bash para #!/bin/zsh
2 - Após abrir um terminal normal que está em bash, digitei zsh
3 - Aparentemente abriu uma nova shell zsh
4 - executei o Script em questão e mostra o seguinte erro:
meuipnet:17: = not found
Não sei de onde ele pega este :17: o meuipnet é o nome da função ou a chamada dela no final do script.
[citando]function meuipnet {
[/citando]
ou
[citando]
meuipnet "/tmp/ip_net.txt" "$2"
[/citando]
Mesmo no shell bash/sh, quando eu chamo o script ele parece carregar o zsh e o erro é o mesmo.
Script inteiro para quem tem o zsh instalado pra testar.
=============================
#!/bin/zsh
#: file: meu_ip_light.sh (Retirado comentários e dados extras)
#: since: 2011-08-14 23:03 (GMT -03:00)
#: author: Geraldo T. Albuquerque - Twitter: @AprendiNoLinux ou @GA_Tux
#: version: 1.0 final - Sai que é sua Tafarel.
#------------------------------------------------------------------------------
#: objectives: Só pega IP na net e compara com o último gravado.
#------------------------------------------------------------------------------
function meuipnet {
clear
local _DIR_EXEC_RM _VALIDA_IP _SO_NUM_IP _ECHO_TRACO _MEU_IP_NET RED NC _ARQ_ATUAL _ARQ_TMP _vl
RED='\e[1;31m' ; NC='\e[0m'
_ARQ_TMP="/tmp/tmp_ip_tmp.tmp" ; _ARQ_ATUAL="/tmp/ip_net_agora.txt"
_DIR_EXEC_RM=$(whereis -b rm | sed 's/rm: //') ; _MEU_IP_NET="Nenhum"
[ $1 ] && _ARQ_ATUAL="$1"; [ $2 ] && _SO_NUM_IP="$2"
wget
http://automation.whatismyip.com/n09230945.asp -q -O "$_ARQ_TMP"
if test -e "$_ARQ_ATUAL"; then _MEU_IP_NET=$(cat "$_ARQ_ATUAL"); fi
if test -e "$_ARQ_TMP"; then _ARQ_TMP=$(cat "$_ARQ_TMP"); fi
_vl='^(((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))\.){3}((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))$'
_VALIDA_IP=$(printf "${_ARQ_TMP}%s" | egrep "$_vl")
if test -z "$_VALIDA_IP"; then
printf "# ${RED} NÃO VALIDOU seu IP. Veja: ${_VALIDA_IP}%s\n"
exit 1 # Padrão de retorno de Erro
fi
if [ "$_SO_NUM_IP" == "IP" ]; then
printf "${_VALIDA_IP}%s\n"
else
if [ "$_MEU_IP_NET" == "$_VALIDA_IP" ]; then
printf "# Ip NET: [${RED}$_MEU_IP_NET${NC}]%s\n"
else
printf "# Ip é: [${RED}${_VALIDA_IP}${NC}] Anterior: ${_MEU_IP_NET}%s\n"
fi
fi
if test -e "$_MEU_IP_NET"; then $_DIR_EXEC_RM -f "$_ARQ_ATUAL"; fi
printf "${_VALIDA_IP}%s" > $_ARQ_ATUAL #Grava IP atual.
}
# Se usar Standalone ou no arq .bashrc, altere "nomearq.txt" e "$2" para "IP"
meuipnet "/tmp/ip_net.txt" "$2"
#EOF
==============================
oops: A minha intenção é testar os Scripts tanto em bash quanto em zsh. Estou pensando seriamente em mudar para o zsh porque ele tem suporte ao autoload e parece estar em constante desenvolvimento. Qualquer ajuda é bem vinda.
Quem tiver experiência em bash e zsh que possa dar um comparativo entre ambos, seria uma boa.
De antemão, obrigado.