Muszę uzyskać dostęp do niektórych zmiennych wewnętrznych bash (BASH_LINENO, BASH_SOURCE) z polecenia wywołanego przez skrypt powłoki. Jedynym możliwym interfejsem między moim poleceniem a skryptem są zmienne środowiskowe. Czy jest jakiś sposób na skonfigurowanie basha w celu wprowadzenia globalnych zmiennych wewnętrznych:
Przykład:
myscript.sh
#!/bin/bash
# ... some scripting stuff ...
mycommand # LINENO=4, BASH_SOURCE=([0]="myscript.sh")
# ... some other scripting stuff ...
Więc potrzebuję tego, gdy bash wywołuje mycommand; $ LINENO i $ BASH_SOURCE (zmienne wewnętrzne) stają się globalne, aby moje polecenie miało do nich dostęp.
Nie szukam poleceń takich jak:
declare -x LINENO
Bo LINENO
zmienia się z czasem, jeśli to zrobię declare -x LINENO
nowa zmienna globalna LINENO
przyjmuje wartość LINENO
(wewnętrzny) w tym momencie. Potrzebuję tego, aby był dynamiczny, więc globalny LINENO
odzwierciedla LINENO
wartość w każdej zmianie.
W słowach programistycznych: chcę zmienić zakres tych zmiennych z wewnętrznego na globalny lub zrobić coś w rodzaju wskaźnika.
źródło
mycommand
być przystosowanym do akceptowania argumentów linii poleceń jak wmycommand "$LINENO" "${BASH_SOURCE[0]}"
?mycommand
a powłoka musi być zmiennymi środowiskowymi.mycommand
z taką liniąline=$LINENO src="$BASH_SOURCE[0]}" mycommand
a potem miećmycommand
sprawdźline
isrc
zmienna?