Nieuws:

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

Auteur Topic: var instellen met waarde *  (gelezen 2232 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. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

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. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

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. Geen grafische toepassingen voor systeembeheer.
You can never make a system 100% secure unless you unplug the machine from all networks, turn it off, lock it in a safe, smother it in concrete and never use it.

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 »