Ich möchte den Text von kurzen Python-Skripten in einem Bash-Skript einbetten, zum Beispiel in meinem .bash_profile
. Was ist der beste Weg, um so etwas zu tun?Einbetten kurzer Python-Skripte in ein Bash-Skript
Die Lösung, die ich bisher habe, ist die Python-Interpreter mit der -c
Option zu nennen, und sagen Sie dem Dolmetscher zu exec
was auch immer es von stdin
liest. Von dort aus kann ich einfache Werkzeuge wie die folgenden bauen, so dass ich Text zur Verwendung in meiner interaktiven Eingabeaufforderung verarbeiten:
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)] % "
Dieser Ansatz, wenn auch etwas komisch für mich riecht, und ich frage mich, welche Alternativen es zu tun so könnte es sein.
Meine Bash Scripting Fähigkeiten sind ziemlich rudimentär, daher bin ich besonders interessiert zu hören, ob ich aus der Sicht des Bash Interpreters etwas albernes mache.
können Sie deutlicher sagen, was ist es eigentlich versuchen Sie zu tun? von dem, was ich sehe, wird Python nicht wirklich benötigt. Sie können die meisten Dinge mit der Shell machen. – ghostdog74
@ ghostdog74: nichts wirklich tiefer als ich sagte; Ich bin nur ein viel besserer Python-Programmierer als ein Bash-Programmierer, und IMO Python ist im Allgemeinen leistungsfähiger als bash. Es könnte nützlich sein, Funktionen zu implementieren, die in einem Bash-Skript in Python verwendet werden, und manchmal nicht von externen Dateien abhängig sind. Ich mache endlich den Wechsel von Tcsh zu Bash (nach 15 Jahren), und ich versuche, die Shell nach meinem Willen/Vorlieben zu biegen. –
-1: Warum nicht einfach eine .py-Moduldatei erstellen? Warum erzwingen Sie die Python in ein Shell-Skript, wenn eine bessere Lösung (normalerweise) die Verwendung der Shell vollständig beendet? –