Повторная публикация моего комментария в качестве ответа для лучшего форматирования.
Ой, кажется, я полностью пропустил это на странице руководства.
pstree -pas PID
покажет также родителей, отформатированных в виде дерева, и включает PID процессов.
Пример:
[doktor5000@Mageia5]─[20:06:48]─[~] pstree -pas $$
systemd,1
└─konsole,9515
└─bash,9517
└─pstree,9595 -pas 9517
[doktor5000@Mageia5]─[20:06:49]─[~]
Como comenté, no puede simplemente generar ese archivo txt, porque no es un script de shell válido.
Para obtener ese valor particular , intente
config=/home/$USER/git_projects/cfhookbash/config.txt
token=$( grep -oP 'www.example.com_token="\K[^"]+' "$config" )
En bash
, los nombres de variables solo pueden estar formados por caracteres alfanuméricos de un solo -byte o guión bajo (y el primer carácter no puede ser un dígito ).
Entonces, www.example.com_token
no es un nombre de variable válido, www.example.com_token="asdfasdf"
no se reconoce como una asignación sino como un comando simple.
En ksh93 (el shell bash
intenta emular ), www.example.com_token="asdfasdf"
funcionaría solo si definiera la variable www
como una variable compuesta :
$ compound www
$ www.example.com_token="asdfasdf"
$ typeset -p www
typeset -C www=(example=(com_token=asdfasdf))
$ printf '%s\n' "${www.example.com_token}"
asdfasdf
En bash
, posiblemente podría usar una variable de matriz asociativa (una de esas características ksh93 copiadas porbash
):
typeset -A token
token[www.example.com]=asdfasdf
printf '%s\n' "${token[www.example.com]}"
(esa sintaxis también debería funcionar en ksh93
yzsh
).
Si no puede modificar eso config.txt
para que sea compatible con la sintaxis de su shell, posiblemente podría editarlo sobre la marcha antes de evaluarlo. Como (con ksh93
, bash
ozsh
):
typeset -A token
. <(sed 's/^\([^=]*\)_token=/token[\1]=/' < config.txt)
Para transformar el x.y_token=
a token[x.y]=
o:
. <(sed -e :1 -e 's/^\([^=]*\)\.\(.*=\)/\1_\2/; t1' < config.txt)
Para reemplazar cada .
a la izquierda del =
con _
.
Pero tenga cuidado, cualquiera de esos podría hacer reemplazos en lugares donde no se esperan como en:
foo.bar_token="multi
line.x. _token assignment (=)"
O si el expediente no contiene únicamente asignaciones.
Ahora, si ese config.txt
en realidad no contiene la sintaxis de shell adecuada,desea buscar otros problemas de sintaxis como líneas que contienen foo="price: $12"
o foo="x `y' z"
donde esos $
, `
son operadores especiales en la sintaxis de Shell.