Jakie są specjalne Zmienne powłoki dolara?
W Bash wydaje się, że istnieje kilka zmiennych, które posiadają specjalne, konsekwentnie znaczące wartości. Na przykład,
./myprogram &; echo $!
Zwróci PID procesu, który wytłoczył myprogram
. Wiem o innych, takich jak $?
, które myślę, że jest obecny TTY. Są inni?
4 answers
-
$1
,$2
,$3
, ... są parametrami pozycyjnymi . -
{[3] } jest strukturą podobną do tablicy wszystkich parametrów pozycyjnych,
{$1, $2, $3 ...}
. -
{[5] } jest rozszerzeniem IFS wszystkich parametrów pozycyjnych,
$1 $2 $3 ...
. - {[7] } jest liczbą parametrów pozycyjnych.
-
$-
bieżące opcje ustawione dla powłoki. -
$$
pid aktualnej powłoki (nie subshell). -
$_
Najnowszy parametr (lub ścieżka abs polecenia do Uruchom bieżącą powłokę natychmiast po uruchomieniu). -
$IFS
jest separatorem pól (wejściowych). -
$?
jest najnowszym stanem wyjścia Potoku na pierwszym planie. -
$!
jest PID najnowszego polecenia tła. -
$0
to nazwa powłoki lub skryptu powłoki.
Większość powyższych informacji można znaleźć pod parametrami specjalnymi w podręczniku referencyjnym Bash. Istnieją wszystkie zmienne środowiskowe ustawione przez shell .
Aby uzyskać pełny indeks, zobacz Reference Manual Variable Index .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-03 12:46:21
-
$_
ostatni argument ostatniego polecenia -
$#
liczba argumentów przekazywanych do bieżącego skryptu -
$*
/$@
lista argumentów przekazywanych do skryptu jako lista łańcuchowa / rozdzielana
Off the top of My head. Google dla zmiennych specjalnych bash.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-02 03:46:22
Aby pomóc zrozumieć, co zrobić $#
, $0
i $1
,..., $n
do, używam tego skryptu:
#!/bin/bash
for ((i=0; i<=$#; i++)); do
echo "parameter $i --> ${!i}"
done
Uruchomienie zwraca reprezentacyjne wyjście:
$ ./myparams.sh "hello" "how are you" "i am fine"
parameter 0 --> myparams.sh
parameter 1 --> hello
parameter 2 --> how are you
parameter 3 --> i am fine
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-25 12:46:22
Zwróć uwagę na niektóre przykłady; $0 może zawierać ścieżkę wiodącą, jak również nazwę programu. Np. zapisz ten dwuliniowy skrypt jako. / mytry.sh i wykonaj go.
#!/bin/bash
echo "parameter 0 --> $0" ; exit 0
Wyjście:
parameter 0 --> ./mytry.sh
To jest na bieżącej (rok 2016) wersji Bash, poprzez Slackware 14.2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-14 11:32:29