Sei que o título não é muito claro, mas realmente não sei como declarar meu problema.
Eu tenho um shell e quero poder chamá-lo usando vários parâmetros, alguns precisando de argumentos, outros não.
exemplo (eu o cobri):
] $ ./my_script -j arg1
] & ./my_script -p
Meu problema é que eu quero poder usar vários parâmetros como:
] $ ./my_script -paj
para passar o argumento para os parâmetros que precisam, assim:
] $ ./my_script -paj arg4a arg4j
Mas parece que não consigo fazê-lo, ao tentar os primeiros parâmetros que precisam de arg, usar os parâmetros da rede como argumento ...
Então, existe a minha pergunta, é possível, fazê-lo funcionar?
Se puder ajudar, posso mostrar uma pequena amostra em que trabalho para testar isso.
linux
command-line
bash
Anarko_Bizounours
fonte
fonte
getopt
comando ou o comandogetopts
interno do bash. Dê uma olhadaman getopt
eman bash
.getopts
- assumindo que "-a" exija um argumento, esse valor será "j" e "arg4a" e "arg4j" serão enviados ao programa como parâmetros posicionais $ 1 e $ 2. Por que você sente que precisa recolher as opções? O que há de errado commyscript -pa a_arg -j j_arg
??myscript -pa a_arg -j j_arg
Respostas:
Aqui está uma resposta longa. Este é um modelo que eu uso no trabalho (iniciado no ksh, mas funciona no bash).
Não funcionará para "-paj a_arg j_arg", mas você provavelmente poderá modificá-lo para funcionar dessa maneira. Confira as
paramnum
linhas.fonte