Я пытаюсь разобраться в какой-то другой среде процессов, чтобы получить конкретную переменную env.
Поэтому я пробовал команду sed, например:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/\1/p" /proc/pid/environ
Но я получаю в качестве вывода полный файл окружения.Если я заменю \ 1 просто статической строкой, я получу эту строку плюс весь файл окружения:
sed -n "s/\x00ENV_VAR_NAME=\([^\x00]*\)\x00/BLAHBLAH/p" /proc/pid/environ
Я должен просто получить "BLAHBLAH" в последнем примере.Этого не произойдет, если я избавлюсь от нулевых символов и использую какой-то другой набор тестовых данных.
Это побудило меня попытаться преобразовать \ x00 в \ x01, что, похоже, работает:
cat /proc/pid/environ | tr '\000' '\001' | sed -n "s/\x01ENV_VAR_NAME=\([^\x01]*\)\x01/\1/p"
Я что-то упустил из-за sed?Или я должен просто придерживаться этого обходного пути?