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 fae5d94..c57a69c 100755 --- a/kv-bash +++ b/kv-bash @@ -113,14 +113,14 @@ 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 } kv_user_dir=${KV_USER_DIR:-$default_kv_user_dir} 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 4a73008..7182818 100755 --- a/kv-test +++ b/kv-test @@ -96,6 +96,20 @@ TESTCASE 'spaces in value' 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 + TESTCASE 'can change user dir' kvclear kvset Foo Bar @@ -112,7 +126,7 @@ TESTCASE 'can return to old user dir' [ $(kvlist | wc -l) == 1 ] RESULT kvclear - + #more testcase here echo