일부 내용이 추가된 파일에서 명령을 실행하는 방법은 무엇입니까?

일부 내용이 추가된 파일에서 명령을 실행하는 방법은 무엇입니까?

다음과 같은 몇 가지 명령을 저장하는 파일이 있습니다.

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. 따라서 명령줄에서 이것을 실행하려면 다음을 입력합니다.

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

그런데 이 명령을 사용하여 일부 파일을 실행하고 싶고, 실행할 때마다 파일 이름을 지정하고 싶습니다. 이 명령을 라는 파일에 저장하려고 시도했고 command실행했습니다.

cat command echo file.py | bash

하지만 작동하지 않는 것 같습니다. 어떻게 진행해야 하나요?

답변1

스크립트에서 변수를 설정하고 빠른 상태 검사를 수행하세요.

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}"

변수가 정의되지 않았거나 비어 있으면 생성자는 ${var?message}오류를 발생시키고 표시합니다.messagevar

를 사용하여 기본값을 제공할 수도 있습니다 ${var-defaultvalue}.

더 간단한 호출 기능으로 설정할 수도 있습니다.

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"

관련 정보