Você tem dois problemas lá, primeiro são os espaços que são deixados em suas variáveis quando você executa o read
com IFS='='
. Em segundo lugar, você não tem jboss_version
no seu arquivo de aplicativo. Uma maneira de fazer isso seria:
file="./app.properties"
if [ -f "$file" ]
then
echo "$file found."
while IFS='=' read -r key value
do
key=$(echo $key | tr '.' '_' | tr -d ' ' | tr -d '\t')
val=$(echo $value | tr -d ' ' | tr -d '\t')
eval "${key}='${val}'"
done < "$file"
echo "build_name = " ${build_name}
echo "build_no = " ${build_no}
echo "Jboss_version = "${appServer_version}
echo "Got the value from property file"
name=${build_name}-
build=${build_no}-
Jboss=${appServer_version}
fileName="${name}${build}${Jboss}"
echo mkdir [$fileName]
else
echo "$file not found."
fi
No entanto, eu faria isso de uma maneira diferente. Forçando IFS
para ser usado na divisão e na associação também, isso também usa todas as variáveis do arquivo app.properties
:
file="./app.properties"
ARRAY=()
if [ -f "$file" ]
then
echo "$file found."
IFS='='
while read -r key value
do
val=$(echo "$value" | tr -d '[[:space:]]')
ARRAY+=("$val")
done < "$file"
IFS='-'
newdir="${ARRAY[*]}"
if [ -d "$newdir" ]; then
echo "rm -rf $newdir"
rm -rf "$newdir"
fi
echo "mkdir $newdir"
mkdir "$newdir"
else
echo "$file not found."
fi