Ich habe einen Befehl in einer Variablen gespeichert. Stellen wir uns vor, die Variable $i
hat den Wert:
cat -nT index.php |grep 'someregex'
Wenn ich versuche, die obige Variable durch Eingabe auszuführen $i
, schlägt dies fehl, da die Shell versucht, die gesamte Variable als einen Befehl auszuführen. Ich habe auch versucht eval($i)
, $i
Backticks zu verwenden und einzufügen.
Wie kann ich die Shell so ausführen lassen, $i
als wäre es ein Befehl? Und warum funktioniert es nicht genauso wie.
$i='echo hi'; $i
Liegt es daran, dass ich die einzelnen Anführungszeichen irgendwie hacken musste? (Weil du sie nicht verschachteln kannst.) Derzeit ist meine Lösung
echo $i > /foo; . /foo
Aber ich möchte nicht nur dafür eine Datei erstellen, sondern sie später löschen.
Was ich mit "Ich habe in den einfachen Anführungszeichen gehackt" meine, habe ich getan:
$i='cat index.php | grep -P '"'"'MYREGEXHERE'"'"