Ondersteuning > Programmeren

var instellen met waarde *

(1/2) > >>

bart85:
Ik probeer een variabele in te stellen wat de waarde * moet hebben. Maar ik krijg de inhoud van working directory te zien met:

--- Code: ---var=*
--- Einde van code ---
Met het volgende werkt het ook niet:

--- Code: ---var='*'
--- Einde van code ---
En ook niet met:

--- Code: ---var=$'\*'
--- Einde van code ---
Dit geeft nl.:

--- Code: ---echo $var
\*
--- Einde van code ---

Dit is voor in een bash script.
Wat ik wil, maar niet gaat:

--- Code: ---echo $var
*
--- Einde van code ---

bart85:
Oplossing door gebruik van quotes om de variabele heen zetten:

--- Code: ---var=\*
echo "$var"
*
--- Einde van code ---

vanadium:
Alleen dat laatste is nodig. Bij definitie van een variable gebeurt geen shell expansie: `var=*` stelt `var` in op `*`. Bij het echo commando heb je dan wel de quotes nodig, zodat je `echo "*"` krijgt in plaats van `echo *`. In dat laatste geval gaat bash inderdaad, vooraleer het commando uitgevoerd wordt, `*` expanderen tot alle bestandsnamen. De toewijzing werkt op dezelfde wijze met `var=\*` of `var="*".

erik1984:
Interessant! Inderdaad alleen quotes bij de echo nodig.

--- Code: ---erik@erik-desktop:~$ a=*
erik@erik-desktop:~$ echo "$a"
*

--- Einde van code ---

Wist ook niet dat echo * de inhoud van de huidige map geeft.

bart85:
Mijn gedachte was dat de escape key (een \  ) zou werken. Maar dat maakt dus geen verschil. Raar dat de escape key hier geen functie heeft.

Navigatie

[0] Berichtenindex

[#] Volgende pagina

Naar de volledige versie