Imam precej preprosto skripto, ki je podobna naslednji:
#!/bin/bash
VAR1="$1"
MOREF='sudo run command against $VAR1 | grep name | cut -c7-'
echo $MOREF
Ko zaženem to skripto iz ukazne vrstice in ji podam argumente, ne dobim nobenega izpisa. Ko pa zaženem ukaze iz spremenljivke $MOREF
, lahko dobim izpis.
Kako lahko vzamemo rezultate ukaza, ki ga je treba izvesti znotraj skripte, jih shranimo v spremenljivko in nato to spremenljivko izpišemo na zaslon?
Poleg znakov za nazaj
lahko uporabite command
$(command)
ali "$(command)"
, ki se mi zdita lažje berljiva in omogočata gnezdenje.
OUTPUT="$(ls -1)"
echo "${OUTPUT}"
MULTILINE=$(ls \
-1)
echo "${MULTILINE}"
Uvoznice ("
) so pomembne za ohranitev večvrstičnih vrednosti.
Pravi način je
$(sudo run command)
Če boste uporabili apostrof, morate uporabiti ``
in ne `'``. Ta znak se imenuje "backticks" (ali "grave accent").
Kot je ta:
#!/bin/bash
VAR1="$1"
VAR2="$2"
MOREF=`sudo run command against "$VAR1" | grep name | cut -c7-`
echo "$MOREF"