가변저장 데이터의 시작 부분에 있는 공백을 제거하는 방법을 문의하고 싶습니다. 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_cnt
Bash에서 변수 앞의 공백을 제거하려면 다음을 사용하십시오.
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