<Anterior | Conteúdo | Próxima>
Resumindo
Com a adição de parâmetros posicionais, agora podemos escrever scripts bastante funcionais. Para tarefas simples e repetitivas, os parâmetros posicionais tornam possível escrever funções de shell muito úteis que podem ser colocadas em um usuário .bashrc arquivo.
Nossa sys_info_page programa cresceu em complexidade e sofisticação. Aqui está uma lista completa, com as alterações mais recentes destacadas:
#! / Bin / bash
# sys_info_page: programa para gerar uma página de informações do sistema
PROGNAME = $ (nome de base $ 0)
TITLE = "Relatório de informações do sistema para $ HOSTNAME" CURRENT_TIME = $ (data + "% x% r% Z")
TIMESTAMP = "Gerado $ CURRENT_TIME, por $ USER"
report_uptime () {cat << - _EOF_
Tempo de atividade do sistema
$ (tempo de atividade)
_EOF_ retorno
#! / Bin / bash
# sys_info_page: programa para gerar uma página de informações do sistema
PROGNAME = $ (nome de base $ 0)
TITLE = "Relatório de informações do sistema para $ HOSTNAME" CURRENT_TIME = $ (data + "% x% r% Z")
TIMESTAMP = "Gerado $ CURRENT_TIME, por $ USER"
report_uptime () {cat << - _EOF_
Tempo de atividade do sistema
$ (tempo de atividade)
_EOF_ retorno
}
report_disk_space () {cat << - _EOF_
Utilização de espaço em disco
$ (df -h)
_EOF_ retorno
}
report_home_space () {
if [[$ (id -u) -eq 0]]; então gato << - _EOF_
Utilização do espaço doméstico (todos os usuários)
$ (du -sh / home / *)
_EOF_
outro
gato << - _EOF_
Utilização do espaço doméstico ($ USER)
$ (du -sh $ HOME)
_EOF_
fi voltar
}
uso () {
echo "$ PROGNAME: uso: $ PROGNAME [-f arquivo | -i]" return
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ retorno
}
# opções de linha de comando do processo
}
report_disk_space () {cat << - _EOF_
Utilização de espaço em disco
$ (df -h)
_EOF_ retorno
}
report_home_space () {
if [[$ (id -u) -eq 0]]; então gato << - _EOF_
Utilização do espaço doméstico (todos os usuários)
$ (du -sh / home / *)
_EOF_
outro
gato << - _EOF_
Utilização do espaço doméstico ($ USER)
$ (du -sh $ HOME)
_EOF_
fi voltar
}
uso () {
echo "$ PROGNAME: uso: $ PROGNAME [-f arquivo | -i]" return
}
write_html_page () {cat << - _EOF_
$ TITLE
$ TITLE
$ TIMESTAMP
$ (report_uptime)
$ (report_disk_space)
$ (report_home_space)
_EOF_ retorno
}
# opções de linha de comando do processo
Resumindo
interativo =
nome do arquivo =
enquanto [[-n $ 1]]; caso $ 1 em
-f | --Arquivo)
mudança
nome do arquivo = $ 1
;;
interativo =
nome do arquivo =
enquanto [[-n $ 1]]; caso $ 1 em
-f | --Arquivo)
-i | --interactive) interativo = 1
;;
-h | --help) saída de uso
;;
*) uso> & 2
sair 1
;;
turno esac
feito
# modo interativo
if [[-n $ interativo]]; então, embora seja verdade; Faz
ler -p "Digite o nome do arquivo de saída:" nome do arquivo if [[-e $ nome do arquivo]]; então
read -p "'$ filename' existe. Substituir? [y / n / q]>" case $ REPLY em
Y | y) pausa
;;
Q | q) echo "Programa encerrado." saída
;;
*) Prosseguir
;;
esac
elif [[-z $ filename]]; então continue
outro
quebrar
fi
feito
fi
# saída da página html
if [[-n $ filename]]; então
se tocar em $ filename && [[-f $ filename]]; então write_html_page> $ filename
outro
-i | --interactive) interativo = 1
;;
-h | --help) saída de uso
;;
*) uso> & 2
sair 1
;;
turno esac
feito
# modo interativo
if [[-n $ interativo]]; então, embora seja verdade; Faz
ler -p "Digite o nome do arquivo de saída:" nome do arquivo if [[-e $ nome do arquivo]]; então
read -p "'$ filename' existe. Substituir? [y / n / q]>" case $ REPLY em
Y | y) pausa
;;
Q | q) echo "Programa encerrado." saída
;;
*) Prosseguir
;;
esac
elif [[-z $ filename]]; então continue
outro
quebrar
fi
feito
fi
# saída da página html
if [[-n $ filename]]; então
se tocar em $ filename && [[-f $ filename]]; então write_html_page> $ filename
outro
echo "$ PROGNAME: Não é possível gravar o arquivo '$ filename'"> & 2 exit 1
fi mais
write_html_page
fi
echo "$ PROGNAME: Não é possível gravar o arquivo '$ filename'"> & 2 exit 1
fi mais
write_html_page
fi
Ainda não terminamos. Ainda há mais coisas que podemos fazer e melhorias que podemos fazer.