Man page - hashstash(3)

Packages contains this manual

Manual


UNTITLED () LOCAL UNTITLED ()

NAME

hashstash — libbash library that implements hash data structure

SYNOPSIS
hashSet

⟨ Value⟩ ⟨ Key⟩ ⟨ HashName⟩ [SubHashName [...]]

$retval hashGet

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

$retval hashKeys

⟨ HashName⟩ [SubHashName [...]]

hashRemove

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

hashDelete

⟨ HashName⟩ [SubHashName [...]]

DESCRIPTION

General

hashstash is a collection of functions that implement basic hash data-structure in bash scripting language.

The function list:

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.

FUNCTIONS DESCRIPTIONS

hashSet

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

Adds a value to the hash.

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

$retval hashGet

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

Returns the value of Key in HashName to the $retval variable.

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 .

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 .

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.

hashDelete

HashName ⟩ [SubHashName [...]]

Deletes the hash HashName [SubHashName [...]].

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.

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.

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.

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
%

HISTORY

The idea to write hashstash library appeared when we’ve discovered the full power of the bash eval function.

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.

AUTHORS

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

SEE ALSO

ldbash (1), libbash (1) Linux UNDATED HASHSTASH (3)