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)