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
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