Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: var instellen met waarde *  (gelezen 3431 keer)

Offline bart85

  • Lid
var instellen met waarde *
« Gepost op: 2023/06/23, 18:53:46 »
Ik probeer een variabele in te stellen wat de waarde * moet hebben. Maar ik krijg de inhoud van working directory te zien met:
var=*Met het volgende werkt het ook niet:
var='*'En ook niet met:
var=$'\*'Dit geeft nl.:
echo $var
\*

Dit is voor in een bash script.
Wat ik wil, maar niet gaat:
echo $var
*
« Laatst bewerkt op: 2023/06/23, 19:15:55 door bart85 »
Je leert maar mooi over weg gaan met de commandline.
Linus: "I'm happy with the people who are wandering around looking at the stars but I am looking at the ground and I want to fix the pothole before I fall in."
I look to the clouds behind me and see the thunder coming.

Offline bart85

  • Lid
Re: var instellen met waarde *
« Reactie #1 Gepost op: 2023/06/23, 19:17:56 »
Oplossing door gebruik van quotes om de variabele heen zetten:
var=\*
echo "$var"
*
« Laatst bewerkt op: 2023/06/23, 19:23:49 door bart85 »
Je leert maar mooi over weg gaan met de commandline.
Linus: "I'm happy with the people who are wandering around looking at the stars but I am looking at the ground and I want to fix the pothole before I fall in."
I look to the clouds behind me and see the thunder coming.

Offline vanadium

  • Lid
Re: var instellen met waarde *
« Reactie #2 Gepost op: 2023/06/24, 09:16:14 »
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="*".

Re: var instellen met waarde *
« Reactie #3 Gepost op: 2023/06/24, 11:45:36 »
Interessant! Inderdaad alleen quotes bij de echo nodig.
erik@erik-desktop:~$ a=*
erik@erik-desktop:~$ echo "$a"
*

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

Offline bart85

  • Lid
Re: var instellen met waarde *
« Reactie #4 Gepost op: 2023/06/26, 20:21:42 »
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.
Je leert maar mooi over weg gaan met de commandline.
Linus: "I'm happy with the people who are wandering around looking at the stars but I am looking at the ground and I want to fix the pothole before I fall in."
I look to the clouds behind me and see the thunder coming.

Offline vanadium

  • Lid
Re: var instellen met waarde *
« Reactie #5 Gepost op: 2023/06/27, 10:32:17 »
Bij het toewijzen van een variabele blijft het escape teken zo functioneren, shellexpansie is er echter niet.

var=* en var=\* zorgen er daardoor voor dat var gelijk is aan *. var="\*", var="\""*, var='\*' ,var="\"*,  var=\\* en var=\\\* zullen alle var gelijk stellen aan \*: de "glob" (*) moet niet beschermd worden, het escape teken wel als je het in de variabele wil.

Het is dan bij het echo commando dat de expansie gebeurt: met var=*  zal echo $var geeft het commando echo *, de shell zal vooraleer dit uit te voeren * expanderen tot alle overeenstemmende bestandsnamen.  Shell expansie van de * belet je in het echo commando: echo "$var"

Bash is soms moeilijk "to get your head around"  :D
« Laatst bewerkt op: 2023/06/27, 10:43:21 door vanadium »