./hello(var=True)
würde von REPL Shell unmöglich. In einigen Fällen könnte es nützlich sein, die Python-Funktion in Ihrer aktuellen Shell-Sitzung verfügbar zu haben. Hier ein Workaround, um Ihre Python-Funktionen in Ihrer Shell-Umgebung verfügbar zu machen.
# python-tools.sh
#!/usr/bin/env bash
set -a # make all available export all variable)
function hello(){
cd "/app/python/commands"
python "test.py" [email protected]
}
Inhalt des Python-Skript
#! /usr/bin/env python
# /app/python/commands/test.py script
import sys
def test(*args):
print(args)
if __name__ == '__main__':
if sys.argv[1] in globals().keys():
print(sys.argv[1])
globals()[sys.argv[1]](sys.argv[2:])
else:
print("%s Not known function" % sys.argv[1])
Dann Quelle python-tools.sh
source python-tools.sh
Nach der hallo Funktion ist
$ hello test arg2 arg2
test
(['arg2', 'arg2'],)
[CLI Argumente] (http://www.tutorialspoint.com/python/python_command _line_arguments.htm) –
Die bloße Tatsache, dass Sie 'sys.argv' haben (ziemlich genau die gleiche Idee, die hinter dem' int argc, char * [] argv' in C/C++ steht) sollte Ihnen sagen, dass es möglich ist. Wie Sie es tun, ist jedoch falsch. Überprüfen Sie den Link @ViacheslavKondratiuk schickte Ihnen plus die offizielle Dokumentation. Beachten Sie auch, dass Sie ['getopt()'] (https://docs.python.org/2/library/getopt.html) verwenden können, bei dem es sich um einen CLI-Argumentparser im C-Stil handelt. Es gibt andere Module für dieses auch, aber diese zwei sind omho die übliche Auswahl. – rbaleksandar
Kann man es ohne 'python -c' nennen? Ja. Mit der von Ihnen vorgeschlagenen Syntax? Nr. – jonrsharpe