Ik heb een vrij eenvoudig script dat iets is als het volgende:
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
Wanneer ik dit script vanaf de commandoregel uitvoer en de argumenten doorgeef, krijg ik geen uitvoer. Wanneer ik echter de commando's in de $MOREF
variabele uitvoer, krijg ik wel uitvoer.
Hoe kan men de resultaten van een commando dat binnen een script moet worden uitgevoerd, opslaan in een variabele, en die variabele vervolgens op het scherm weergeven?
Naast backticks
kun je ook command
$(command)
of "$(command)"
gebruiken, die vind ik makkelijker te lezen, en maken nesting mogelijk.
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
Citeren ("
) is van belang om meerregelige waarden te behouden.
De juiste manier is
$(sudo run command)
Als je'een apostrof gaat gebruiken, heb je `` `` nodig, niet
'`. Dit teken heet "backticks" (of "grave accent").
Zoals dit:
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"