From cd803418dc642edb36b603202d9e5315c9a210db Mon Sep 17 00:00:00 2001 From: JButler Date: Fri, 22 Apr 2022 16:46:45 -0400 Subject: [PATCH] Now able to use bash variable substitution when setting keys --- README.md | 2 ++ kv-bash | 4 ++-- kv-test | 16 +++++++++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 35a89f2..f61634f 100755 --- a/README.md +++ b/README.md @@ -73,4 +73,6 @@ RUN ALL TEST CASES: 11 kvclear; kvlist => line count = 0 [ OK ] 12 kvget return empty value => error code != 0 [ OK ] 13 spaces in value [ OK ] + 14 spaces in value with substitution [ OK ] + 15 spaces in value without quotes [ OK ] ``` diff --git a/kv-bash b/kv-bash index c34534e..4ae876b 100755 --- a/kv-bash +++ b/kv-bash @@ -110,13 +110,13 @@ kvget() { # Usage: kvset [value] kvset() { key="$1" - value="$2" + value="${@:2}" kv_validate_key "$key" || { kv_echo_err_box 'invalid param "key"' 'kvset()' return 1 } test -d "$KV_USER_DIR" || mkdir "$KV_USER_DIR" - echo "$value" > "$KV_USER_DIR/$key" + echo "${value[@]}" > "$KV_USER_DIR/$key" } # Usage: kvdel diff --git a/kv-test b/kv-test index 08c1556..4251a86 100755 --- a/kv-test +++ b/kv-test @@ -92,7 +92,21 @@ TESTCASE 'spaces in value' [ "$(kvget name)" == ' phat dam ' ] RESULT kvdel name - + +TESTCASE 'spaces in value with substitution' + test="fizz buzz" + kvset name "foo bar $test" + [ "$(kvget name)" == "foo bar fizz buzz" ] + RESULT + kvdel name + +TESTCASE 'spaces in value without quotes' + test="fizz buzz" + kvset name foo bar $test + [ "$(kvget name)" == "foo bar fizz buzz" ] + RESULT + kvdel name + #more testcase here echo