Removendo espaço no início dos dados variáveis

0

Gostaria de perguntar como posso remover o espaço no início dos dados armazenados da variável. Eu tinha um script gerado automaticamente que obteria MySQL COUNT do banco de dados.

MYSQL COUNT SCRIPT - > .ini file (variable holder / parameters) - > report-script

Isso significa que eu tenho um script que contará alguns dados no banco de dados, então os dados serão armazenados em um arquivo de texto (.ini) como variável, em seguida, um outro script lerá o arquivo e procurará a variável.

Sob o db-count-script.sh aqui, alguns dos códigos relacionados ao meu problema.

#!/bin/bash
mysql_count=$(mysql ... -e"USE my_db;SELECT COUNT(*) FROM my_db.sr1 WHERE intime='1';"

echo $mysql_count #This is the output of this echo --> COUNT(*) 15

#from here I'm going to remove the COUNT(*)
cnt=${mysql_count//COUNT(*)}

#storing the data to the variable
echo "db_cnt=\""$cnt"\"" >> db-count.ini

Dentro do db-count.ini , tenho esses dados.

db_cnt=" 7"

Eu quero remover o espaço em branco nessa variável porque eu tenho script para chamar essa variável assim e para o uso futuro eu realmente preciso dos dados da variável clean.

#!/bin/bash
source db-count.ini
echo "Count:"$db_cnt
#Output 
Count: 7 

Alguma sugestão? Dicas?

Obrigado.

    
por Edmhar 22.07.2016 / 03:10

3 respostas

3

Para aparar os espaços em branco a partir da frente da variável db_cnt no bash use:

db_cnt="${db_cnt#"${db_cnt%%[![:space:]]*}"}" 

Exemplo:

$ db_cnt=" 7"
$ echo "$db_cnt"
 7
$ db_cnt="${db_cnt#"${db_cnt%%[![:space:]]*}"}"
$ echo "$db_cnt"
7
$

Você pode usar a sintaxe para personalizar seu script da maneira que quiser.

    
por 22.07.2016 / 03:15
1

Um simples echo removerá o espaço da frente e do verso

db_cnt=$(echo $db_cnt)

Se você deseja remover o espaço em branco apenas na frente, mas deseja preservar espaços no final da variável, é possível usar sed as

db_cnt=$(echo "$db_cnt" | sed 's/^ *//')
    
por 22.07.2016 / 06:17
0

A conversão de uma linha em uma matriz e a seleção da posição da matriz reduzirão os espaços.

while read input; do
   if [[ $input =~ COUNT\(\*\) ]]; then
       hunks=($input)
       db_cnt=${hunks[1]}
       echo $db_cnt
       break;
   fi
done < input
    
por 10.08.2016 / 07:00