He intentado resolver este problema por algún tiempo sin suerte. La corteza de la situación es que estoy usando un script bash para enviar parámetros de AA script en Python:Cómo pasar argumentos de variable del script bash al script python
Ejemplo:
foo.sh llama bar.py .... la llamada será similar a: bar. py $ var1 $ var2 ... $ varn
La secuencia de comandos python imprime todos los argumentos usando la matriz sys.argv. La secuencia de comandos python funciona correctamente desde la línea de comandos, pero cuando se llama desde la secuencia de comandos bash (es decir, foo.sh), no obtengo ningún resultado de bar.py.
Además, comencé foo.sh con la opción "#!/Bin/bash -x" y vi también la salida.
Para resumir:
- Dos guiones, foo.sh y bar.py
- foo.sh llama bar.py, pasar variables de foo.sh como argumentos para bar.py
- bar .py muestra los argumentos que considere el uso de sys.argv
- bar.py funciona cuando se ejecuta desde su propio terminal, no funciona cuando se llama desde foo.sh
cualquier ayuda ¡¡¡¡ser impresionante!!!!
Gracias!
Editar: Hola a todos, gracias por las respuestas, el código completo es bastante larga ... pero ... el contenido de los dos guiones se podrían resumir
foo.sh _ __ _
#!/bin/bash
declare -a list1;
declare -a list2;
list1=("foo" "bar" "please");
list2=("foo" "bar" "please" "help");
declare -a joined;
joined=($(bar.py "${list1[@]}" "${list2[@]}"));
bar.py _ __ _
#!/bin/python
import sys
for arg in sys.argv:
print arg
Como supongo que todas las sangrías en la pitón son correctas (no estoy seguro de cómo StackOverflow hace esto todavía :)). Estos dos representan el núcleo del problema que estoy teniendo. Como se dijo, bar.py imprime los argumentos correctamente, cuando no se llama desde foo.sh.
PS: Yo tenía la intención de decir "corteza"
publique el script bash real, sería mucho más fácil ver qué está mal – tobyodavies
Entonces está haciendo algo muy mal. Publique un código mínimo que muestre el problema. –
¿Puede el script de python imprimir algo cuando se le llama desde el script bash? P.EJ. si agrega 'print" wtf "' en la parte superior de 'foo.py', ¿ve ese resultado cuando ejecuta el script bash? – intuited