Quiero crear un script .sh que
- ejecutar un archivo Python llamado
match_scraper.py
, - actualice una base de datos psql como se muestra,
- llama a una araña scrapy para que la ejecute.
Cuando creo el script .sh, ¿cómo llamo esos comandos correctamente? Esto es lo que se me ocurrió:
#!/bin/bash
~Documents/dota2/dotaapi2/ python match_scraper.py
psql dota2apidb
update games set online=1 where online is null;
~Documents/dota2/gosugamers/gosugamers/spiders/ scrapy crawl dota
Respuesta1
Primero necesitas asegurarte de que cada línea/parte de tuintentoEl script funciona en un shell (fuera de un script). No puedo decir si el tuyo lo hará, así que tendrás que comprobarlo tú mismo.
Y para ejecutar unpitónscript que necesita python
ANTES de la ruta al script
También:
~
es un acceso directo al directorio de inicio delactualusuario~asdf
es un acceso directo al directorio de inicio para elasdfusuario~/Documents
es la ruta a laDocuments
carpeta en el directorio de inicio delactualusuario~Documents
está buscando el directorio de inicio delDirectoriousuario que no es válido a menos que tenga un usuario llamado Directorio
Como señaló @muru, probablemente quisiste decir ~/Documentos. Entonces tu script bash probablemente se vería así
#!/bin/bash
python ~/Documents/dota2/dotaapi2/match_scraper.py
psql dota2apidb
update games set online=1 where online is null;
python ~/Documents/dota2/gosugamers/gosugamers/spiders/scrapy crawl dota
Nuevamente, no sé si esto funcionará ya que no tengo idea de si cada línea funcionará. Por ejemplo, ¿ python ~/Documents/dota2/gosugamers/gosugamers/spiders/scrapy crawl dota
realmente funciona cuando lo ejecuta en la línea de comando?
Y no lo sépsqlpero sospecho que necesitas pasarle algún parámetro de línea de comando para que ejecute ese update...
comando.