Nat Kus:
Hello - does anyone know why the below gives the error ‘error: exactly one NAME is required, got 2’
k-cm hello whatever=1 a=b
function k-cm() {
for var in "$@"
do
if [ "$var" != "$1" ]; then
values="$values --from-literal=$var"
fi
done
echo "kubectl create configmap $1 $values"
kubectl create configmap $1 $values
}
Alistair Mackay:
Hi @Nat Kus
It works fine
controlplane ~ ➜ function k-cm() {
> for var in "$@"
> do
> if [ "$var" != "$1" ]; then
> values="$values --from-literal=$var"
> fi
> done
> echo "kubectl create configmap $1 $values"
> kubectl create configmap $1 $values
> }
controlplane ~ ➜ k-cm test-cm x=1 y=2 key1=value1 key2=value2
kubectl create configmap test-cm --from-literal=x=1 --from-literal=y=2 --from-literal=key1=value1 --from-literal=key2=value2
configmap/test-cm created
controlplane ~ ➜ k get cm test-cm
NAME DATA AGE
test-cm 4 10s
Nat Kus:
ok thanks - it might be my zsh
Alistair Mackay:
You’re right. I just tried it in zsh and got that result.
Try this
function k-cm() {
name=$1
shift
values=()
for var in $@
do
values+=("--from-literal=$var")
done
echo "kubectl create configmap $name ${values[@]}"
kubectl create configmap $name $values[@]
}