passando em opções de linha de comando no bash

2

Eu tenho uma pergunta. Eu tenho um roteiro, um tipo de roteiro longo escrito em bash aprox. 370 linhas. Isso tem várias funções e nessas funções o usuário tem que inserir informações que são armazenadas em arquivos. (Isto é suposto representar um banco de dados MySQL, com as funções INSERT, UPDATE, SELECT, SELECT onde x = y). Eu mesmo criei isso no bash, agora a única coisa que me resta é que eu preciso ser capaz de passar argumentos na linha de comando do script, isso fará o mesmo que o script faz. Eu sei que o bash tem parâmetros posicionais como

$1
$2
$3
$*
$@
$0 ( refers to the name of the script)

Eu sei como posso usar esses parâmetros em uma função if simples. Isso não é suficiente para o meu script. Eu basicamente preciso fazer a mesma coisa que o script, mas a partir da linha de comando. Eu tenho lutado com isso há alguns dias e não consigo pensar em uma maneira de fazê-lo funcionar. Talvez alguém aqui possa me ajudar com isso?

Se você quiser ter o script. Isso pode ser possível, mas eu não acho que posso colá-lo aqui ...

EDIT: Link para script, link

Note que sou um iniciante no bash scripting.

EDIT: Isto é em resposta à Resposta 1. Como eu disse, espero poder apenas substituir o if [ "$1" = "one" ] ; then echo "found one" to if [ "$1" = "one" ] ; then echo SELECT onde SELECT é a função que eu tinha anteriormente no meu script (acima)

link LINK para o script de teste

    
por bryan 06.06.2011 / 18:33

2 respostas

0

O script é interativo e lê seus dados com várias instruções read .

Depois de uma rápida olhada, meu julgamento é que seria mais fácil escrever um novo script do que ajustar o script atual para aceitar linhas de comando. (Com o uso liberal de cortar / colar, não deve ser tão difícil).

Algumas dicas para você começar.

  1. Escreva um script simples que leia três ou quatro variáveis da linha de comando, salve as variáveis nas variáveis locais A B C D e echo novamente.
  2. No seu script, crie uma função que if A=one echos "found one" if A=two echos "found two" if A=three echos "found two" (case funciona bem para isso)
  3. Crie outra função que faça o mesmo que no2 acima, mas para B , C & %código%
  4. Substitua as declarações de eco em no2 por uma chamada para suas funções recém-criadas
  5. Se você fizer isso funcionar, agora poderá começar a substituir suas funções e valores de espaço de propriedade por coisas reais do script atual.

Por fim; Não tome muitas medidas ao mesmo tempo e, quando ficar preso, faça uma pergunta no link . Não se esqueça de incluir a quantidade mínima de código que pode ser executada e reproduz o erro.

Boa sorte

    
por 06.06.2011 / 19:31
0

No bash, há getopts embutido para analisar os parâmetros posicionais. Você também pode usar o comando externo mais antigo getopt . Veja Usando o getopts para ler as opções / argumentos passados para um script

    
por 06.06.2011 / 21:41