system : Centos 6.7 Lasted
Shell : bash
python : 2.6.6
Es macht mich sehr verwirrt! Beispiel unten:Mischen Python und Bash Shells Xargs Befehl Zweifel
5 Dateien:
a1111 a2222 b1111 b2222 t.py
t.py Inhalt:
import sys
if __name__ == '__main__':
a1 = sys.argv[1]
print 'id(a1)=%s, len(a1)=%s, str(a1)=%s, type(a1)=%s' % (id(a1), len(a1), str(a1), type(a1))
tun dies wie:
ls | xargs -I{} echo $(python t.py '{}')
Ausgang:
id(a1)=139821454683184, len(a1)=2, str(a1)=a1111, type(a1)=<type 'str'>
id(a1)=139821454683184, len(a1)=2, str(a1)=a2222, type(a1)=<type 'str'>
id(a1)=139821454683184, len(a1)=2, str(a1)=b1111, type(a1)=<type 'str'>
id(a1)=139821454683184, len(a1)=2, str(a1)=b2222, type(a1)=<type 'str'>
id(a1)=139821454683184, len(a1)=2, str(a1)=t.py, type(a1)=<type 'str'>
meine Frage ist, warum len (a1) = 2, aber str (a1) = A1111?, Ist Stringlänge offensichtlich nicht gleich 2,
mit keinem Echo in Ordnung ist, aber es ist nicht meine Frage. Ich habe Option Verwendung xargs -p die cmd
ls | xargs -I{} python t.py '{}'
Reproduziert unter OS X auf Python 2.7.10 und 3.5.1 – cdarke