Wat is $@ in Bash?

Ik denk dat de handle $@in een shellscript een array is van alle argumenten die aan het script zijn gegeven. Is dit waar?

Ik vraag het omdat ik normaal gesproken zoekmachines gebruik om informatie te verzamelen, maar ik kan niet googlen voor $@en ik ben er te gewend aan geraakt om gemakkelijk alles bediend te krijgen.


Antwoord 1, autoriteit 100%

Ja. Zie de man-pagina van Bash(het eerste u gaat naar) onder Speciale parameters:

Speciale parameters

De shell behandelt verschillende parameters speciaal. Er mag alleen naar deze parameters worden verwezen; toewijzing aan hen is niet toegestaan.

*Breidt uit naar de positionele parameters, beginnend bij één. Wanneer de uitbreiding plaatsvindt tussen dubbele aanhalingstekens, wordt deze uitgebreid tot een enkel woord met de waarde van elke parameter gescheiden door het eerste teken van de speciale IFS-variabele. Dat wil zeggen, "$*"is gelijk aan "$1c$2c...", waarbij chet eerste teken van de waarde is van de IFS-variabele. Als IFS niet is ingesteld, worden de parameters gescheiden door spaties. Als IFS nul is, worden de parameters samengevoegd zonder tussenliggende scheidingstekens.

@Breidt uit naar de positionele parameters, beginnend bij één. Wanneer de uitbreiding plaatsvindt tussen dubbele aanhalingstekens, wordt elke parameter uitgebreid tot een afzonderlijk woord. Dat wil zeggen, "$@"is gelijk aan "$1""$2"… Als de uitbreiding met dubbele aanhalingstekens voorkomt binnen een woord , wordt de uitbreiding van de eerste parameter samengevoegd met het begingedeelte van het oorspronkelijke woord en de uitbreiding van de laatste parameter wordt samengevoegd met het laatste gedeelte van het oorspronkelijke woord. Als er geen positionele parameters zijn, breiden "$@"en $@zich uit tot niets (d.w.z. ze worden verwijderd).


Antwoord 2, autoriteit 40%

Alleen al als ik dat lees, zou ik nooit hebben begrepen dat "$@"uitbreidt tot een lijst met afzonderlijke parameters. Terwijl "$*"één parameter is die bestaat uit alle parameters bij elkaar opgeteld.

Als het nog steeds geen zin heeft, doe dit dan.

Bash speciale parameters uitgelegd met vier voorbeeld-shellscripts

LEAVE A REPLY

Please enter your comment!
Please enter your name here

eighteen − four =

Other episodes