
Существует множество отличных программ dtrace, и некоторые из них требуют передачи им PID, чтобы они могли отслеживать этот PID. Внутри скриптов dtrace этот аргумент хранится в $1. Возможно ли просто заменить $1 на $target и -c в командной строке, а остальная логика скрипта останется прежней?
Все ли так просто, как я думаю?
решение1
Вам придется заполнить переменную $target
в вашем скрипте, как например target=$1
. Простая замена будет недостаточной и не будет работать.
Давайте посмотрим, что мы можем найти в документации по этому поводу:
Аргументы, передаваемые скрипту из командной строки[1]:
$0, $1, $2, $3 ...
$0
— имя самого скрипта,$1
— первый аргумент,$2
второй,$3
третий и т. д.[2]После$9
аргументы должны быть заключены в скобки, например,${10}, ${11}, ${12}
.Специальные переменные
$*
и$@
обозначим все позиционные параметры.
Однако вы можете сделать что-то похожее на это, чтобы сделать скрипт более читабельным:
#!/bin/sh
target=$1
Но это означало бы вложение переменных/данных, что большинством программистов считается плохой практикой.