1 votos

necesidad de convertir zsh script separado en una función dentro de un script maestro

Estoy tratando de convertir 6 scripts en un solo scripts, para que en lugar de que el usuario final tenga que descargar 6 scripts, haga chmod +x mess to them etc, y luego ejecutar el script maestro, sólo necesitarían un script y podrían cumplir el objetivo.

El problema es que tengo un bucle que pasa por un archivo de texto pregenerado, y ejecuta xargs en cada fila del archivo de texto pregenerado.

El xargs entonces llama a uno de los 5 scripts, que a su vez llama a otros 2 scripts, y así sucesivamente.

He intentado coger el script que xargs se ejecuta, y convertirlo en una función dentro del master-script, pero si sólo lo llamo por ideMini dentro del comando xargs, me dice que el ideMini no existe.

Esto es lo que estoy trabajando ahora mismo

function ideMini() {

whatisit=$(curl -s specificplace/$1 | jq -r)

if [[ "$whatisit" = "xyz" ]]; then
    ./idep.sh $1
elif [[ "$whatisit" = "abc" ]]; then
    ./idmovie.sh $1
fi
}

export -f ideMini

function idDownloads {
echo "ID the downloads?"
select yn in "Yes" "No"; do
  case $yn in
    Yes ) echo "...Identifying downloads for" $email;cut -c110- dlist.txt | xargs -I _ ideMini _ | cat -n;break;;
    No ) break;;
  esac
done
}

También he probado xargs -I _ bash -c 'ideMini "$@"' _

pero sin suerte.

Estoy un poco confundido en cuanto a cómo proceder. girando el idep.sh y idmovie.sh en funciones dentro del mastercript sería trivial, pero este asunto de los xargs me resulta problemático.

Se agradecerá cualquier indicación.

Y sí, preferiría ejecutar sólo un script en lugar de 6. Y sí, si puedo resolver esto xargs tema lo siguiente es que intente copiar y pegar dos scripts en el scripts y esperar lo mejor. La funcionalidad de los scripts está terminada, y no habrá cambios, esto es sólo para facilitar la distribución de la, err, "app".

1voto

New Alexandria Puntos 140

Aunque no es una respuesta directa, se puede evitar esto haciendo que las funciones recurran a los env vars cuando no se pasa ninguna entrada

function llg() {
  the_path=$1
  [ ! -x $1 ] || ref_branch="$path_from_env"
  [ ! -x $path_from_env ] || the_path='.'
  ll "$the_path" | grep "[0-9][0-9]\(\.[0-9]\)\?M "
}

de esta manera, usted puede export path_from_env=something antes de llamar a la función.

En general, a medida que su complejidad aumenta, debería considerar escribir el script en ruby o Python, en lugar de escribir un script en bash. La mayoría de los sistemas operativos vienen con uno de esos intérpretes script instalados.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X