Quando você faz uma tarefa, o lado direito é considerado:
n_name=$h_name"_"$time_stamp"_*.nmon"
Portanto, o asterisco ( *
) será incluído literalmente na variável.
Não será expandido como é habitual com asteriscos em caminhos.
Como é provável que você não tenha um arquivo com um asterisco no diretório, o arquivo não foi encontrado e um erro foi emitido por ls
.
Além disso, se você quiser que a expansão dos asteriscos funcione, isso deve ser feito no diretório em que o arquivo deve ser encontrado:
a_dir=/dir_to_file
n_name=$(echo "${a_dir}/${h_name}_${time_stamp}_"*".nmon")
n_dir="/var/log/nmon_data"
cd "$n_dir"
E é uma boa ideia usar a opção de shell nullglob
:
shopt -s nullglob
para evitar que *
seja retido se não houver arquivo com esse nome.
Ou, melhor ainda, usar a opção failglob
:
shopt -s failglob
Para ter um erro claro emitido quando nenhum arquivo é encontrado.
a_dir=/dir_to_file
n_name=$(shopt -s failglob; echo "$a_dir/${h_name}_${time_stamp}_"*".nmon")
(( $? )) && exit 1
Ajuste o valor de "$ n_dir" às suas necessidades (não está claro na sua descrição do problema).
E por favor: cite suas expansões por padrão, como: ls -al "$n_name"