Corrigi alguns erros sintáticos no seu arquivo e removi todos os &&
s.
O principal problema foi sua declaração de matriz e as instruções IF. Aqui está o resultado:
#!/bin/bash
declare -a arr1=("1000/1.0", "2000/2.0", "3000/3.0", "4000/4.0")
declare -a arr2=("100/0.138", "200/0.098", "300/0.07347", "400/0.0545", "500/0.0449")
for i in "${arr1[@]}"
do
echo -e "\e[41m## entered first loop ##\e[0m"
str1=$i | cut -d'/' -f1
str2=$i | cut -d'/' -f2
if [ "$str2" = "1.0" ]
then
sed -i 's/1.0/1.0/g' file1.txt
else
sed -i 's/$ii/$str2/g' file1.txt
fi
for j in "${arr2[@]}"
do
echo -e "\e[41m## entered second loop ##\e[0m"
str3=$j | cut -d'/' -f1
str4=$j | cut -d'/' -f2
old_loc="test_name=name_([^]+)_ni_([^]+)"
new_loc="test_name=name_$str1_ni_str3"
sed -i 's/old_loc/new_loc/g' file2.sh
old_loc2="#hello HELLO ([^]+) // 4 am"
new_loc2="#hello HELLO $str4 // 4 am"
sed -i 's/old_loc2/new_loc2/g' file.cpp
done
ii=$str2
if [ "$str2" = "2.0" ]
then
break
fi
done