Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux管道以前在特定位置的结果_Linux_Bash_Shell_Pipe - Fatal编程技术网

Linux管道以前在特定位置的结果

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

考虑这样的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]是我的_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