Nieuws:

Ubuntu-NL weer online!

Na een periode van technische problemen en een overbelaste server zijn we eindelijk weer bereikbaar.
Samen met Hobbynet, onze sponsor en hostingpartner, hebben we een oplossing gevonden zodat alles weer soepel draait.

Bedankt voor jullie geduld en begrip. We hopen nu weer verder te gaan waar we gebleven waren.

Het team van Ubuntu-NL

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

Auteur Topic: var instellen met waarde *  (gelezen 10817 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 »