Basis van Linux en de opdrachtregel

$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d

Zoals hierboven te zien is, wordt het script s.sh met argumenten uitgevoerd. Wat is de uitvoer?

  1. A3 ./s.sh
  2. B3 a
  3. C4 a
Antwoord en toelichting tonen

Antwoord: B. 3 a

In een script zijn $1, $2, … het eerste, tweede, … argument, is $# het aantal argumenten en is $0 de naam van het script zelf. "b c" staat tussen dubbele aanhalingstekens en wordt dus één argument dat een spatie bevat; er zijn drie argumenten: a, b c en d. Daarom is $# gelijk aan 3 en $1 gelijk aan a, en is de uitvoer 3 a. Om alle argumenten gescheiden door te geven aan een ander commando, schrijf je "$@".

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. In welk geval is de voorwaarde van de bovenstaande if in een shellscript waar?
  2. Welke bestanden staan na de bovenstaande sessie in de directory?
  3. Een uitvoerbaar script run.sh in de huidige directory geeft „command not found” als het wordt gestart door „run.sh” te typen, maar wordt wel uitgevoerd als „./run.sh” wordt getypt. Wat is de reden?
  4. Wat is de combinatie van de uitvoer van de twee bash -c-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  5. Wat is de belangrijkste functie van een pakketbeheersysteem in Linux (apt op Debian-gebaseerde systemen, dnf op Red Hat-gebaseerde systemen enzovoort)?