Asignar variable en condicional de GNU Parallel
Mi código es:
echo 'url' | parallel "if curl -ss "$url" | grep yes; then vara+="$(echo {})"; else varb+="$(echo {})"; fi"
Pero las variables no están siendo configuradas. La instrucción “if then” funciona perfectamente, por ejemplo, if curl $url | grep yes; then echo hecho; else echo no hecho; fi
—> tal cosa funciona, pero las variables no se están estableciendo.
¿Alguien puede ayudarme a encontrar mi error?
Resultado deseado: si curl url y grep una cierta palabra en la fuente, entonces esa URL se agregará a una variable utilizando += y si no se encuentra la palabra, se agregará en otra variable.
Finalmente, después de que se termina el script, quiero tener dos variables: vara que contiene toda la lista de URL que tienen una palabra específica y varb que contiene una lista de URL que no tienen esa palabra en la fuente. Esas variables se utilizan posteriormente en scripts.
davy.ai
Pueden existir dos problemas potenciales en el código proporcionado:
vara
yvarb
no han sido declaradas antes de ser utilizadas en el script. Puedes declararlas al inicio del script de la siguiente forma:Esto asegurará que ambas variables se inicialicen como cadenas vacías.
Expansión de variables: Las variables
vara
yvarb
no se están expandiendo correctamente. Esto se debe a que la sintaxis utilizada para añadir valores a una variable (es decir,+=
) sólo funciona para cadenas citadas con comillas simples o dobles, no dentro de una subtitución de comandos$()
.Para solucionarlo, puedes utilizar la siguiente sintaxis para la expansión de variables:
Aquí, las llaves
${}
se utilizan para la expansión de variables, y las cadenas citadas se separan por espacio para añadir los valores correctamente.Con estos cambios, el código actualizado debería lucir de la siguiente forma:
Esto debería proporcionarte dos variables
vara
yvarb
conteniendo las URLs con y sin la palabra “yes”, respectivamente.