Sintaxe do script Bash

Sintaxe do script Bash

Quero criar um script .sh que irá

  1. execute um arquivo python chamado match_scraper.py,
  2. atualize um banco de dados psql conforme mostrado,
  3. chame um scrapy spider para executar.

Quando crio o script .sh, como chamo esses comandos corretamente? Isto é o que eu descobri:

#!/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

Responder1

Primeiro você precisa ter certeza de que cada linha/parte do seuscript funciona em um shell (fora de um script). Não posso dizer se o seu será, então você mesmo terá que verificar isso.

E para executar umscript que você precisa pythonANTES do caminho para o script

Também:

  • ~é um atalho para o diretório inicial doatualdo utilizador
  • ~asdfé um atalho para o diretório inicial doasdfdo utilizador
  • ~/Documentsé o caminho para a Documentspasta no diretório inicial doatualdo utilizador
  • ~Documentsestá procurando o diretório inicial doDiretóriousuário que é inválido, a menos que você tenha um usuário chamado Directory

Como @muru apontou, você provavelmente quis dizer ~/Documents. Então, seu script bash provavelmente seria parecido com isto

#!/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

Novamente, não sei se isso funcionará, pois não tenho ideia se cada linha funcionará. Por exemplo, python ~/Documents/dota2/gosugamers/gosugamers/spiders/scrapy crawl dotarealmente funciona quando você o executa na linha de comando?

E eu não seimas eu suspeito que você precisa passar algum parâmetro de linha de comando para que ele execute esse update...comando?

informação relacionada