
Es gibt viele tolle dtrace-Programme und einige davon erfordern die Übergabe einer PID, damit sie diese PID verfolgen können. In den dtrace-Skripten wird dieses Argument in $1 gespeichert. Ist es möglich, $1 einfach durch $target und -c in der Befehlszeile zu ersetzen und die restliche Skriptlogik bleibt gleich?
Ist es wirklich so einfach, wie ich denke, dass es sein sollte?
Antwort1
Sie müssten die Variable $target
in Ihrem Skript beispielsweise wie folgt auffüllen target=$1
. Ein einfaches Ersetzen reicht nicht aus und funktioniert nicht.
Mal sehen, was wir in der Dokumentation dazu finden können:
Von der Befehlszeile an das Skript übergebene Argumente[1]:
$0, $1, $2, $3 ...
$0
ist der Name des Skripts selbst,$1
ist das erste Argument,$2
das zweite,$3
das dritte und so weiter.[2]Nach$9
müssen die Argumente in Klammern eingeschlossen werden, zum Beispiel${10}, ${11}, ${12}
.Die speziellen Variablen
$*
Und$@
bezeichnen alle Positionsparameter.
Sie können jedoch etwas Ähnliches tun, um die Lesbarkeit im Skript zu verbessern:
#!/bin/sh
target=$1
Dies würde jedoch eine Verschachtelung von Variablen/Daten bedeuten, was die meisten Programmierer als schlechte Praxis ansehen.