¿Qué hay de malo en el script Bash sobre parámetros y Wget?

1

Ejecutar el comando da

wget_exam -h
Usage: wget_exam2 <fileType> <source>
exit     // then immediately Terminal shut dows

El código

# example wget_exam2 java http://www.example.com/ex_1
function wget_exam2 {
    while [[ $1 == -* ]]; do
    case "$1" in 
        -h|--help|-\? ) echo "Usage: wget_exam2 <fileType> <source>"; exit;;
            --) shift; break;;
        -*) echo "invalid option: $1"; echo "Usage: wget_exam2 <fileType> <source>"; exit;;
    esac
    done
    wget --random-wait -nd -r -p -A "$1" -e robots=off -U mozilla "$2"
}
Léo Léopold Hertz 준영
fuente
Estas bromeando Obtiene la salida deseada del interruptor -h ...
Bobby
¿Ya tenemos una [smells-like-homework]etiqueta?
quack quijote
1
Pregunta simple: ¿qué está realmente mal? ¿Qué esperas?
Gnoupi
El interlocutor espera que las invocaciones de la función no den como resultado salidas de su shell. La respuesta de Dennis a continuación explica por qué lo hace y cómo solucionarlo.
dubiousjim

Respuestas:

2

Si está ejecutando esta función desde un indicador de comandos de shell, el exitcomando le dice al shell que salga en lugar de la función. Probablemente deberías usar returnen su lugar.

Puede usar un valor de retorno con returny probarlo en el script que llama a la función y usar exit allí para salir del script (o no dependiendo del valor de retorno).

$ testfunc(){ return ${1:-0}; }
$ testfunc
$ echo $?
0
$ testfunc 0
$ echo $?
0
$ testfunc 1
$ echo $?
1
Dennis Williamson
fuente