変数データの先頭のスペースを削除

変数データの先頭のスペースを削除

可変保存データの先頭にあるスペースを削除する方法を問い合わせたいと思います。MySQL COUNTデータベースからインポートする自動生成スクリプトがあります。

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

これは、データベースからいくつかのデータを計算するスクリプトがあることを意味します。その後、(.ini)データをテキストファイルに変数として保存し、他のスクリプトがそのファイルを読み取り、変数を見つけます。

以下はdb-count-script.sh私の問題に関する関連コードです。

#!/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

中にはdb-count.iniこんなデータがあります。

db_cnt=" 7"

このように変数を呼び出すスクリプトがあり、後で使用できるように変数のデータを整理する必要があるため、変数のスペースを削除したいと思います。

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

どんな提案がありますか?ヒント?

ありがとうございます。

答え1

db_cntBashから変数の前のスペースを削除するには、次のようにします。

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

例:

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

構文を使用して、必要な方法でスクリプトをカスタマイズできます。

答え2

簡単な方法でecho前面と背面のスペースを取り除きます。

db_cnt=$(echo $db_cnt)

先行スペースを削除し、変数の末尾にスペースを保持するには、sed次のように使用できます。

db_cnt=$(echo "$db_cnt" | sed 's/^ *//')

答え3

行を配列に変換してその配列位置を選択すると、空白が切り捨てられます。

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

関連情報