Başdaky $$bilen $BASHPID arasyndaky tapawudy öwreniň
Recentlyakynda gabyk skriptiniň üstünde işleýärdim we baş üýtgeýän $
we BASHPID
özüni alyp barşynda düýpli tapawudy gördüm. Linux-da işleýän her bir amal prosesi ID bilen berler we operasiýa ulgamy şeýle işleýär.
Şonuň ýaly-da, baş terminal sessiýaňyza amal ID-si hem berler. Häzirki gabygyň amal belgisini saklaýan \$\
we \$BASHPID\
atly ýörite üýtgeýji bar.
Häzirki gabygyňyzyň amal ID-sini görmek üçin aşakdaky buýrugy işlediň. \$\
we \$BASHPID\
ikisi hem şol bir bahany yzyna gaýtarar.
$ echo $$ # Printing special variable $ $ echo $BASHPID # Printing the varibale $BASHPID
Gabykdan haýsydyr bir daşarky programma çagyranymyzda, bu çaga prosessini döreder we programma diňe çaga prosesinde tabşyrylar. Programmanyň işlemegi üçin esasy gabygyň nädip döredilýändigini görkezmek üçin “sample.sh” atly skriptde ýönekeý bir prosessor monitoryny goýanymda aşakdaky mysallara serediň.
#!/usr/bin/env bash ps -ef --forest | grep -i bash
Indi bu skripti işledenimizde, baş prosess ID-ni alyp bileris. Aşakdaky suratdan, skript başy diýlende, çaga prosesi döredýär we ssenariýany işledip bilersiňiz.
$ ./sample.sh
Indi skriptiň içinde \$\
we \$BASHPID\
ulanalyň we onuň nämä gaýdýandygyny göreliň.
#!/usr/bin/env bash echo "============================" ps -ef --forest | grep -i bash echo "============================" echo "PID USING $ FOR SCRIPT $0 ==> $$" echo "PID USING BASHPID FOR SCRIPT $0 ==> $BASHPID" echo
Indi skripti täzeden işlediň.
$ ./sample.sh
Bolýar, şol bir proses ID-ni yzyna berýär. Ine hakyky tapawut. Geliň, gabygyň()
içindäki buýrugy işledip, skriptiň içinde başga bir çaga prosesini döredeliň.
# STORING THE PID INTO A VARIABLE… VAR_HASH=$(echo $$) VAR_BASHPID=$(echo $BASHPID) echo "VALUE OF VAR_HASH ==> $VAR_HASH" echo "VALUE OF VAR_BASHPID ==> $VAR_BASHPID"
Başda, Parentheses çaga prosesine çagyrar we gabygyň içindäki zatlary işleder. Bu ýagdaýda, $
we $BASHPID
ikisi hem täze çaga amal ID-sini saklamalydyr. Aboveöne ýokardaky suratdan, $
esasy ID (skript sample.sh) we $BASHPID
382 saklaýan bir tapawudyň bardygyny görüp bilersiňiz. gabygyň döreden çaga prosesi ID-sini saklaýar.
Indi bu gylyk-häsiýete düşünmäge synanyşalyň. Adam sahypasynyň näme diýýänini göreris.
$ man bash
$
ulananyňyzda, hatda kiçi bukjada-da döredilen ene-atanyň prosess ID-sini saklaýar. <Öne BASHPID
häzirki amal ID-ni saklar, ýagny gabygyň içine çagyrylanda çaga prosesi ID-ni saklar.
Üýtgeýjini $
belläp ýa-da üýtgedip bilmeris, ýöne BASHPID
üýtgedilip bilner, ýöne onuň täsiri ýok.
$ $=10 $ BASHPID=10 $ echo $BASHPID
BASHPID-i sazlamak mümkin. Gurnasaňyz, aýratyn ýagdaýyny ýitirýär we adaty üýtgeýji hökmünde ulanyp bilersiňiz.
$ unset BASHPID $ echo $BASHPID $ BASHPID="Tecmint" $ echo $BASHPID
Gabynyň prosess ID-sini bellemäge synanyşsaňyzam, ulanyjy kesgitlän üýtgeýji hökmünde kabul ediler, sebäbi ol eýýäm aýratyn ýagdaýyny ýitirdi.
$ BASHPID=$(echo $$) $ echo $$;echo $BASHPID
Bu ýagdaýda, aýratyn ýagdaýyny almak üçin BASHPID üçin täze terminal sessiýasyny ulanmaly bolarsyňyz.
Bu makala üçin. $
bilen BASHPID
we bu makalada özlerini alyp barşynyň arasyndaky tapawudy gördük. Bu makalany öwreniň we gymmatly pikirleriňizi biziň bilen paýlaşyň.