Você nunca está realmente atribuindo um nome de arquivo específico para a variável. O que você está fazendo é definir a variável como um padrão glob. Então, quando você passa a variável para echo
, o padrão glob é expandido, então você vê o nome do seu arquivo pritned. No entanto, a variável nunca foi definida para um nome de arquivo específico.
Então, você precisa de uma maneira melhor de obter o nome do arquivo. Algo como:
#!/bin/bash
## Make globs that don't match anything expand to a null
## string instead of the glob itself
shopt -s nullglob
## Save the list of files in an array
files=( /some/file/path/$10AS_26x86_64_$2_*.bin )
## If the array is empty
if [ -z $files ]
then
echo "install archive does not exist."
exit
## If at least one file was found
else
## Take the first file
filename="${files[0]}"
echo "$filename"
fi
{
/usr/bin/expect << EOD
set timeout 20
spawn "${filename}"
expect {
"Press Enter to view the End User License Agreement" {
send "\r"
exp_continue
}
"More" {
send " "
exp_continue
}
"Do you accept the End User License Agreement?" {
send "y\r"
}
}
interact
expect eof
EOD
}