다음과 같은 데이터가 포함된 입력 파일이 있습니다.
name,local_unit,region_unit
AAAAA,hour,cell
BBBBB,15min,cell
이건 내 껍질이야
#!/bin/bash
file_path='/home/vikrant_singh_rana/test_bq_file.csv'
{
read
while IFS=, read -r name local_unit region_unit
do
echo $name
echo $local_unit
echo $region_unit
ingest_tablename=ABC_XYZ_$name
echo $ingest_tablename
aggr_tablename=ABC_XYZ_$name_$local_unit_$region_unit_aggregation
echo $aggr_tablename
done
} < $file_path
변수의 테이블 이름은 채울 수 있지만 ingest_tablename
변수의 테이블 이름은 채울 수 없습니다.aggr_tablename
출력은 아래와 같습니다.
AAAAA
hour
cell
ABC_XYZ_AAAAA
ABC_XYZ_
BBBBB
15min
cell
ABC_XYZ_BBBB
ABC_XYZ_
답변1
밑줄은 _
변수 이름에서 유효한 문자이므로 , 및 이라는 ABC_XYZ_$name_$local_unit_$region_unit_aggregation
이름의 변수를 확장해 보십시오 $name_
. 처음 두 개는 아마도 틀렸을 것입니다. 이를 방지하려면 문제가 되는 변수 이름을 중괄호 안에 넣으세요.$local_unit_
$region_unit_aggregation
aggr_tablename="ABC_XYZ_${name}_${local_unit}_$region_unit_aggregation"
(아니면 aggr_tablename="ABC_XYZ_${name}_${local_unit}_${region_unit}_aggregation"
그렇게 되어야 한다고 생각합니다.)
과제에 따옴표가 꼭 필요한 것은 아니지만, 그렇지 않으면 좋은 생각입니다.
FWIW, shellcheck.net에서는 이 문제에 대해 설명하지만 불행히도 해결 방법은 설명하지 않습니다.
^-- SC2154: name_이(가) 참조되었지만 할당되지 않았습니다("이름"을 의미했나요?).