Me gustaría insertar el texto de los scripts cortos de python dentro de un script bash, para usar en decir, mi .bash_profile
. ¿Cuál es la mejor manera de hacer tal cosa?incrustando scripts cortos de python dentro de un script bash
La solución que tengo hasta ahora es llamar al intérprete de Python con la opción -c
, y decirle al intérprete que exec
lo lea desde stdin
. A partir de ahí, puedo construir herramientas simples como la siguiente, lo que me permite procesar el texto para su uso en mi modo interactivo:
function pyexec() {
echo "$(/usr/bin/python -c 'import sys; exec sys.stdin.read()')"
}
function traildirs() {
pyexec <<END
trail=int('${1:-3}')
import os
home = os.path.abspath(os.environ['HOME'])
cwd = os.environ['PWD']
if cwd.startswith(home):
cwd = cwd.replace(home, '~', 1)
parts = cwd.split('/')
joined = os.path.join(*parts[-trail:])
if len(parts) <= trail and not joined.startswith('~'):
joined = '/'+joined
print joined
END
}
export PS1="\h [\$(traildirs 2)] % "
Este enfoque huele un poco gracioso para mí, sin embargo, y me pregunto qué alternativas a hacerlo de esta manera podría ser.
Mis habilidades de guion bash son bastante rudimentarias, por lo que estoy particularmente interesado en saber si estoy haciendo algo tonto desde la perspectiva del intérprete bash.
¿Puedes decir más claramente qué es lo que en realidad estás tratando de hacer? por lo que veo, Python no es realmente necesario. puedes hacer la mayoría de las cosas con el caparazón. – ghostdog74
@ ghostdog74: nada realmente más profundo de lo que estaba diciendo; Solo soy un programador de python mucho mejor que un programador de bash, y el python IMO es más poderoso, en general, que bash. Puede ser útil implementar la funcionalidad utilizada en un script bash en python, y algunas veces no depender de archivos externos al hacerlo. Finalmente estoy haciendo el cambio de tcsh a bash (después de 15 años), y estoy tratando de doblar el caparazón a mi voluntad/preferencias. –
-1: ¿Por qué no simplemente crear un archivo de módulo .py? ¿Por qué forzar Python en un script de shell cuando una mejor solución es (por lo general) para dejar de usar el shell por completo? –