Basis van Linux en de opdrachtregel

if [ -f "$f" ]; then
  echo "found"
fi

In welk geval is de voorwaarde van de bovenstaande if in een shellscript waar?

  1. AAls er een gewoon bestand bestaat met de naam in de variabele f
  2. BAls er een bestand bestaat met de naam in de variabele f en de grootte ervan groter is dan 0
  3. CAls er een bestand of een directory bestaat met de naam in de variabele f
Antwoord en toelichting tonen

Antwoord: A. Als er een gewoon bestand bestaat met de naam in de variabele f

[ ] is een andere schrijfwijze voor het commando test: het geeft exitstatus 0 (waar) terug als de voorwaarde geldt, en if vertakt op basis daarvan. -f controleert dat „er een gewoon bestand met die naam bestaat” en is onwaar voor een directory. Om alleen het bestaan te controleren gebruik je -e, om te controleren of het een directory is -d, en om te controleren dat de grootte groter is dan 0 -s. Na [ en vóór ] is een spatie nodig, en als de variabele tussen dubbele aanhalingstekens staat, zoals in "$f", werkt de controle ook correct voor namen met spaties.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van Linux en de opdrachtregel

  1. Welke bestanden staan na de bovenstaande sessie in de directory?
  2. 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?
  3. Wat is de combinatie van de uitvoer van de twee bash -c-commando's als de bovenstaande commando's in volgorde worden uitgevoerd?
  4. Wat is de belangrijkste functie van een pakketbeheersysteem in Linux (apt op Debian-gebaseerde systemen, dnf op Red Hat-gebaseerde systemen enzovoort)?
  5. Wat is op een Linux-systeem met systemd het verschil tussen „systemctl start license.service” en „systemctl enable license.service” voor de service license.service?