HASHDELETE(3)

📦
version 0.9.11 · 2 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

✨ hashstash(3) — the libbash hash era 💅

okay bestie, sit down, grab a strawberry 🍓, because we're about to talk about hashstash — the libbash library that implements a hash data structure, fr fr. it's a LOCAL page, it's giving "handcrafted in your own shell", and honestly? iconic. 👑


🌸 NAME 🌸

hashstash — a libbash library that implements hash data structure. no cap.


✨ SYNOPSIS ✨

hashSet            ⟨Value⟩ ⟨Key⟩ ⟨HashName⟩ [SubHashName [...]]
$retval hashGet    ⟨Key⟩ ⟨HashName⟩ [SubHashName [...]]
$retval hashKeys   ⟨HashName⟩ [SubHashName [...]]
hashRemove         ⟨Key⟩ ⟨HashName⟩ [SubHashName [...]]
hashDelete         ⟨HashName⟩ [SubHashName [...]]

look at that lineup. five functions. all of them carrying the whole thing. 🫶


💜 DESCRIPTION 💜

🦋 General 🦋

so, hashstash is a collection of functions that implement basic hash data-structure in the bash scripting language. yes, bash. yes, hashes. the way that works is genuinely so main character of it. 💅

the function list, and bestie, memorize it:

  • hashSet — Adds a value to the hash
  • hashGet — Returns a value from the hash
  • hashKeys — Returns a list of keys of the hash
  • hashRemove — Removes a key from the hash
  • hashDelete — Deletes a hash

detailed interface description follows. stay with me, it's giving syllabus energy but it slaps. ⭐


🎀 FUNCTIONS DESCRIPTIONS 🎀

🍓 hashSet ⟨Value⟩ ⟨Key⟩ ⟨Hashname⟩ [SubHashName [...]]

Adds a value to the hash. periodt.

Parameters:

  • ⟨Value⟩ — The value to set in HashName[Key].
  • ⟨Key⟩ — The key for the value Value.
  • ⟨HashName⟩ [SubHashName [...]] — A string that contains the name of the hash. If the hash is a sub hash of another hash, the "father hash" name MUST BE WRITTEN FIRST, followed by the sub-hash name.

Value will be the value of the key Key in the hash HashName. for example, if you have (or want to define) hash C, which is subhash of hash B, which is subhash of hash A, and C has a key named ckey1 with value cval1, then you should use:

hashSet cval1 ckey1 A B C

see how the father hash A comes first and then it trickles down? that's the whole vibe. 🧚


🌈 $retval hashGet ⟨Key⟩ ⟨HashName⟩ [SubHashName [...]]

Returns the value of Key in HashName to the $retval variable. yes, it slides the answer right into $retval, like a little gift. 🎁

Parameters:

  • ⟨Key⟩ — The key that hold the value we wish to get.
  • ⟨HashName⟩ [SubHashName [...]] — A string that contains the name of the hash. If the hash is a sub hash of another hash, the "father hash" name MUST BE WRITTEN FIRST, followed by the sub-hash name.

Return Value:

The value of the key Key in the hash HashName. The value is returned in the variable $retval. 💖


🌸 $retval hashKeys ⟨HashName⟩ [SubHashName [...]]

Returns a list of keys of the hash HashName in the variable $retval. like, the whole guest list. 👑

Parameters:

  • ⟨HashName⟩ [SubHashName [...]] — A string that contains the name of the hash. If the hash is a sub hash of another hash, the "father hash" name MUST BE WRITTEN FIRST, followed by the sub-hash name.

Return Value:

The value of the key Key in the hash HashName. The value is returned in the variable $retval.


🦋 hashRemove ⟨Key⟩ ⟨HashName⟩ [SubHashName [...]]

Removes the key Key from the hash HashName. bye bestie, not a drill. 💀

  • ⟨Key⟩ — The key we wish to remove from HashName.
  • ⟨HashName⟩ [SubHashName [...]] — A string that contains the name of the hash. If the hash is a sub hash of another hash, the "father hash" name MUST BE WRITTEN FIRST, followed by the sub-hash name.

This function should also be used to remove a sub-hash from its "father hash". In that case, the key will be the name of the sub-hash. sneaky but valid. ✨


💜 hashDelete ⟨HashName⟩ [SubHashName [...]]

Deletes the hash HashName [SubHashName [...]]. full on yeet. 🗑️

Parameters:

  • ⟨HashName⟩ [SubHashName [...]] — A string that contains the name of the hash. If the hash is a sub hash of another hash, the "father hash" name MUST BE WRITTEN FIRST, followed by the sub-hash name.
If this function is used on a sub-hash, a key with the name of the sub-hash will remain in its "father hash" and will hold a NULL value. 😭 so it's not fully gone, it's just a ghost. noted.

😭 BUGS 😭

  • A hash name can only contain characters that are valid as part of bash variable names (i.e. a-zA-Z0-9_). The same applies for hash keys. so no cute emoji keys, sorry. 💀
  • As for now, there is no way of knowing if a key represents a value or a sub-hash. If a sub-hash will be used as a key, the returned value will be its keys list.
ngl those two are the fine print you must read. no cap.

🍓 EXAMPLES 🍓

Define hash table hashA with key Akey1 with value Aval1 use:

% hashSet Aval1 Akey1 Ahash

Now:

% hashGet Akey1 Ahash
% echo $retval
Aval1
% hashKeys Ahash
% echo $retval
Akey1
%

look at her go. $retval doing exactly what it's supposed to do. ate. 💅✨


🧚 HISTORY 🧚

The idea to write hashstash library appeared when we've discovered the full power of the bash eval function. yeah. eval. the plot twist of it all. 👑

As of the name hashstash, it has two meanings. The first, it means 'stash' of hash functions. The second is, that hashstash contains subhashes inside, so it looks like stash of packed information. two meanings, one name, very demure. 🎀


🫶 AUTHORS 🫶

  • Hai Zaar <haizaar@haizaar.com>
  • Gil Ran <gil@ran4.net>

give them their flowers. 🌸


⭐ SEE ALSO ⭐


and that's the whole page, bestie. 🦋 hashstash(3) — source is Linux, it's from LOCAL, and it's UNDATED, so like… timeless, actually. she simply is. 💖💅✨ go forth and stash your hashes. 🫶

📦 where this page comes from