Bash, Dynamic Variable Problem >.<

Hello,
I have a problem with a bash script, I've been doing recherches but i can't make it work. It is my first time with a dynamic variable and i don't understand how to write it.

#!/bin/bash
USER=BARSPIN
HOTKEYS_PATH="/home/$USER/Documents/bash/tibia/HOTKEYS"

CFG1="A"
CFG2="B"
CFG3="C"
# i have around 100 CFGX variables..

EXIT=0
if [ -e "$HOTKEYS_PATH" ]; then
    N=1
    while [ $N -lt 100 ]; do
        if [ -e "$HOTKEYS_PATH/"$CFG"$N"".cfg" ]; then
            N=$($N+1)
        else
            echo  " "$CFG"$N"".cfg is missing."
            EXIT=1
            break
        fi
    done
else
    echo " The hotkeys path is wrong"
    EXIT=1
fi
.....

Thanks Alot!!!

I would just use arrays. Try:

CFG[1]=A
CFG[2]=B
CFG[3]=C
...
if [ -e "$HOTKEYS_PATH/${CFG[$N]}.cfg" ]; then

It doesn't works :confused:

What does not work?

Why not try it longhand first?

Last login: Sat Aug 31 17:26:40 on ttys000
AMIGA:barrywalker~> for n in {1..11}; do cpg[$n]="Number is $n..."; done
AMIGA:barrywalker~> n=2
AMIGA:barrywalker~> echo "${cpg[$n]}"
Number is 2...
AMIGA:barrywalker~> n=5
AMIGA:barrywalker~> echo "${cpg[$n]}"
Number is 5...
AMIGA:barrywalker~> n=0
AMIGA:barrywalker~> echo "${cpg[$n]}"

AMIGA:barrywalker~> # cpg[0] does not exist!
AMIGA:barrywalker~> n=123
AMIGA:barrywalker~> echo "${cpg[$n]}"

AMIGA:barrywalker~> # cpg[123] does not exist!
AMIGA:barrywalker~> n=11
AMIGA:barrywalker~> echo "${cpg[$n]}"
Number is 11...
AMIGA:barrywalker~> _

I'd do it this way:

#!/bin/bash

USER=BARSPIN
HOTKEYS_PATH="/home/$USER/Documents/bash/tibia/HOTKEYS"

CFG[1]="A"
CFG[2]="B"
CFG[3]="C"
...

EXIT=0

if [[ -e $HOTKEYS_PATH ]]; then
    for (( N=1; N <= 100; ++N )); do  ## Or N <= ${#CFG[@]}
        if [[ ! -e $HOTKEYS_PATH/${CFG[N]}.cfg ]]; then
            echo  " $HOTKEYS_PATH/${CFG[N]}.cfg is missing."
            EXIT=1
            break
        fi
    done
else
    echo " The hotkeys path is wrong."
    EXIT=1
fi

...
1 Like