Вам проще передать параметр "$ 1" в команду internal
python3
.
Если вы не хотите этого делать, вы все равно можете получить команду external
параметр строки с трюком из /proc
, например:
$ cat parent.sh
#!/usr/bin/bash
python3 child.py
$ cat child.py
import os
ext = os.popen("cat /proc/" + str(os.getppid()) + "/cmdline").read()
print(ext.split('\0')[2:-1])
$ ./parent.sh aaaa bbbb
['aaaa', 'bbbb']
Примечание:
- важна линия Шебанга в
parent.sh
, илиВы должны выполнить ./parent.sh
с bash
, иначе вы не получите параметр командной строки в ps
или /proc/$PPID/cmdline
. - По причине
[2:-1]
: ext.split('\0') = ['bash', './parent.sh', 'aaaa', 'bbbb', '']
, действительный параметр ./parent.sh
начинается с 2, заканчивается -1.
Обновление : Благодаря команде @cdarke, что "/proc
не является переносимым", я не уверен, еслиэтот способ получения командной строки работает более переносимо:
$ cat child.py
import os
ext = os.popen("ps " + str(os.getppid()) + " | awk ' { out = \"\"; for(i = 6; i <= NF; i++) out = out$i\" \" } END { print out } ' ").read()
print(ext.split(" ")[1 : -1])
, которые все еще имеют тот же вывод.