Koyi Bambanci Tsakanin $$da $BASHPID a cikin Bash


Kwanan nan ina aiki a kan rubutun harsashi kuma na ga babban bambanci game da yadda bash mai canji na musamman $ da BASHPID ke nuna hali. Duk wani aikin da yake gudana a cikin Linux za'a sanya shi tare da ID na aiki kuma wannan shine yadda tsarin aiki ke tafiyar da aikin.

Hakanan, za a sanya mahimmin lokacin aiki tare da ID na aiki. Akwai keɓaɓɓen canji da ake kira \"$\" da \"$BASHPID \" wanda ke adana ID na tsari na kwasfa na yanzu.

Ci gaba da gudanar da umarnin da ke ƙasa don ganin menene ID ɗin aiwatarwa na kwasfanku na yanzu. Dukansu \"$\" da \"$BASHPID \" duka zasu dawo da ƙimarsu ɗaya.

$ echo $$               # Printing special variable $
$ echo $BASHPID         # Printing the varibale $BASHPID

A cikin bash lokacin da muke kiran kowane shiri na waje daga harsashi, zai haifar da tsari/biyan kuɗi na yara kuma za'a gabatar da shirin a cikin tsarin yara kawai. Duba misalin da ke ƙasa inda na sanya umarnin mai sa ido mai sauƙi a cikin rubutun da ake kira “sample.sh” don nuna yadda kwasfa na iyaye ke ƙirƙirar ƙaramin aiki don gudanar da shirin.

#!/usr/bin/env bash

ps -ef --forest | grep -i bash

Yanzu kan gudanar da wannan rubutun zamu iya samun ID na aikin bash. Daga hoton da ke ƙasa, zaku iya fahimtar lokacin da na kira rubutun bash ƙirƙirar tsarin yaro da gudanar da rubutun.

$ ./sample.sh

Yanzu bari muyi amfani da \"$\" da \"$BASHPID \" a cikin rubutun kuma mu ga abin da ya dawo.

#!/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

Yanzu sake kunna rubutun.

$ ./sample.sh

Yayi daidai, ya dawo da ID iri ɗaya. Anan ya zo ainihin bambanci. Bari mu ƙirƙiri wani tsari na yara a cikin rubutun ta hanyar aiwatar da umarni a ciki maƙallan uwa() .

# 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"

A cikin bash, Iyaye za su yi kira ga tsarin yara da gudanar da duk abin da ya zo a cikin iyayen. A wannan yanayin, duka $ da $BASHPID ya kamata su adana sabon ID na aiwatar da yara. Amma daga hoton da ke sama, za ku ga akwai bambanci inda $ ke adana 382 wanda shine ID na mahaifa (ID ɗin tsari na rubutun samfurin.sh), da $BASHPID adana IDan ID ɗin da aka kirkira wanda aka kirkira ta iyaye.

Yanzu bari muyi kokarin fahimtar wannan halayyar. Za mu ga abin da shafin mutumin ya ce.

$ man bash

Lokacin da kake amfani da $, koda a cikin ƙaramin kuɗi, yana adana ID ɗin tsari na tsarin iyaye wanda aka ƙirƙira shi daga. Amma BASHPID zai adana ID ɗin aiki na yanzu, ma'ana idan aka kira shi a cikin zoben ciki zai adana ID ɗin aiwatar da yaro.

Ba za mu iya sanyawa ko canza canjin $ ba, amma BASHPID za a iya sake sanyawa amma ba shi da wani tasiri.

$ $=10
$ BASHPID=10
$ echo $BASHPID

Zai yiwu a cire BASHPID. Lokacin da kuka sake saitawa, zai rasa jiharsa ta musamman sannan kuma zaku iya fara amfani da wannan azaman canji na yau da kullun.

$ unset BASHPID
$ echo $BASHPID
$ BASHPID="Tecmint"
$ echo $BASHPID

Koda koda kayi ƙoƙarin sanya ID ɗin tsari na harsashi za'a kula dashi azaman mai bayyana mai amfani tunda ya riga ya rasa matsayin ta na musamman.

$ BASHPID=$(echo $$)
$ echo $$;echo $BASHPID

A wannan halin, dole ne kuyi amfani da sabon zaman tashar don BASHPID don samun jiha ta musamman.

Shi ke nan ga wannan labarin. Mun ga bambanci tsakanin $ da BASHPID da yadda suke nuna hali a wannan labarin. Shiga wannan labarin kuma raba ra'ayoyinku masu mahimmanci tare da mu.