Como executar um comando em um arquivo com algumas adições?

0

Eu tenho um arquivo que armazena algum comando que se parece com isso:

sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar

O comando acima só será executado se houver um nome de arquivo (por exemplo, file.py ) anexado a ele. Então, se eu fosse rodar isso na linha de comando, eu colocaria

sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar file.py

No entanto, tenho alguns arquivos que gostaria de executar com este comando e gostaria de especificar o nome do arquivo toda vez que eu o executo. Eu tentei salvar este comando em um arquivo chamado command e fiz

cat command echo file.py | bash

mas parece que não funciona. Como devo proceder daqui?

    
por versatile parsley 23.04.2018 / 20:45

1 resposta

1

No seu script, basta torná-lo uma variável com uma verificação de sanidade rápida:

pyfile="file.py"
sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar "${pyfile?python script not specified}"

A construção ${var?message} lançará um erro e exibirá message se a variável var estiver indefinida ou vazia.

Você pode alternadamente fornecer um valor padrão usando ${var-defaultvalue} .

Você também pode tornar isso uma função para uma chamada mais simples:

runjob() {
    sudo PYSPARK_DRIVER_PYTHON=/bin/python2.7 PYSPARK_PYTHON=/bin/python2.7 SPARK_CONF_DIR=/configuration/spark2 /spark2.1/bin/spark-submit --driver-memory 2g --executor-memory 4g --num-executors 100 --jars /lib/json-serde-1.3.7-jar-with-dependencies.jar "${1?python script not specified}"
}

runjob "/path/to/file.py"
runjob "/path/to/some/other/file.py"
    
por 23.04.2018 / 20:51

Tags