GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie speichere ich das Ergebnis eines ausgeführten Shell-Befehls in einer Variablen in Python?

commands.getstatusoutput würde für diese Situation gut funktionieren. (Veraltet seit Python 2.6)

import commands
print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'"))

os.popen funktioniert dafür. popen - öffnet eine Pipe zu oder von einem Befehl. Der Rückgabewert ist ein offenes Dateiobjekt, das mit der Pipe verbunden ist und gelesen werden kann. split('\n') konvertiert die Ausgabe in eine Liste

import os
list_of_ls = os.popen("ls").read().split('\n')
print list_of_ls
import os
list_of_call = os.popen("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'").read().split('\n')
print list_of_call

Verwenden Sie den subprocess Modul stattdessen:

import subprocess
output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)

Bearbeiten:Dies ist neu in Python 2.7. In früheren Versionen sollte dies funktionieren (mit dem umgeschriebenen Befehl wie unten gezeigt):

import subprocess
output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]

Als Randnotiz können Sie umschreiben

cat syscall_list.txt | grep f89e7000

An

grep f89e7000 syscall_list.txt

Und Sie können sogar die gesamte Anweisung durch eine einzelne awk ersetzen Skript:

awk '/f89e7000/ {print $2}' syscall_list.txt

Führt zu:

import subprocess
output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])

Linux
  1. Wie verwende ich den basename-Befehl?

  2. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  3. Wie erhalte ich die eigene IP-Adresse und speichere sie in einer Variablen in einem Shell-Skript?

  4. Wie setze ich eine Variable gleich der Ausgabe eines Befehls in Grub2?

  5. Gibt es eine Möglichkeit, die Laufzeit des zuletzt ausgeführten Befehls in der Shell zu finden?

So führen Sie einen Shell-Befehl mit Python aus

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

Holen Sie sich das Komplement des Ergebnisses eines Ls-Befehls?

Linux – Wie setzt man die Umgebungsvariable „http_proxy“ in Python zurück?

Wie führe ich einen Befehl in einem Shell-Skript aus?

Wie setze ich die Umgebungsvariable in GDB mit dem Shell-Befehl?