변수 데이터 시작 부분의 공백 제거

변수 데이터 시작 부분의 공백 제거

가변저장 데이터의 시작 부분에 있는 공백을 제거하는 방법을 문의하고 싶습니다. 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

관련 정보