Linux管道以前在特定位置的结果
考虑这样的shell命令Linux管道以前在特定位置的结果,linux,bash,shell,pipe,Linux,Bash,Shell,Pipe,考虑这样的shell命令 PYSPARK_PYTHON=/usr/bin/python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 myfile.py param1 param2 我想通过管道将我的_file.py作为上一个命令的结果。它需要位于该特定位置,因为我将以sys.argv[1]的形式访问param1,而sys.argv[0]是我的_fil
PYSPARK_PYTHON=/usr/bin/python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 myfile.py param1 param2
我想通过管道将我的_file.py作为上一个命令的结果。它需要位于该特定位置,因为我将以sys.argv[1]的形式访问param1,而sys.argv[0]是我的_file.py。我试过了
previous_command_that_returns_myfile.py | PYSPARK_PYTHON=/usr/bin/python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 - param1 param2
但这似乎不是解决办法。
我如何在这样的特定位置指示管道结果
我最初尝试做的是加密文件,然后解密并运行
openssl enc -e -aes-256-cbc -a -in test.py > test_enc
openssl enc -d -aes-256-cbc -a -in test_enc | PYSPARK_PYTHON=/usr/bin/python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 - param1 param2
更新:命令是spark2 submit,第一部分是设置env变量。
根据一种写作方法是
openssl enc -d -aes-256-cbc -a -in script-enc | sh -
其中连字符-似乎代表了我想要的。这里连字符的确切含义是什么?为什么它在我们的例子中不起作用?使用进程替换,我会在bash中尝试:上一个命令\u返回\u myfile.py |/usr/bin/python spark2 submit…还要注意管道后面的命令缺少前导斜杠“/”。希望这只是一个转录错误。如果arg[0]='-'{然后从stdin}读取,那么这里连字符的确切含义是什么?在sh代码中有。它没有特别的意义。实际上,它应该在没有任何限制的情况下工作,因为bash默认读取stdin。为什么在我们的情况下不起作用你必须手动处理。
python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 \
<(previous_command_that_returns_myfile.py) param1 param2
previous_command_that_returns_myfile.py |
python spark2-submit --driver-memory 40g --executor-memory 20g --conf spark.sql.broadcastTimeout=7200 \
/dev/stdin param1 param2