파일에서 값을 읽고 해당 값을 에코하는 bash 스크립트를 작성하려고 합니다. 하지만 어떤 이유로 제대로 작동하지 않습니다. 내 첫 번째 파일의 값은 다음과 같습니다
Alts Risk UI,6C7D672E-929C-46CD-91C0-28ECB9C94D80,hec_json,app_altrisk_ui
app_compliance,B5F88C9B-8C17-411C-91FE-7166E023168C,_json,app_compliance
app_hsc_ui,1AF6F0EC-6E8D-4BEE-8EDE-4DCDE71F0074,hec_json,app_hsc_ui
app_legal,4FE57959-B948-4BD9-B750-F5E7E84539D8,_json,app_legal
값이 정확하게 반영되도록 이런 스크립트를 작성하려고 합니다.
while IFS="," read name token sourcetype index; do
echo ./acs hec-token create --name $name --default-index $index --default-source-type $sourcetype --default-host sh-i-08d9fbd7e31581bd5.mydomain.com --allowed-indexes $index --use-ack=false --disabled=false --token $token
done < hec.csv
정확히 무슨 일이 일어나고 있는지 잘 모르겠지만 출력에는 다른 내용이 표시됩니다. 에코에서 $index를 두 번 인용했기 때문인 것 같습니다. 필요한 출력을 표시하는 스크립트를 어떻게 생성합니까?
내 예상 결과는
./acs hec-token create --name Alts Risk UI --default-index $index --default-source-type hec_json --default-host sh-i-08d9fbd7e31581bd5.mydomain.com --allowed-indexes app_altrisk_ui --use-ack=false --disabled=false --token 6C7D672E-929C-46CD-91C0-28ECB9C94D80
하지만 내가 얻는 결과는
--use-ack=false --disabled=false --token 6C7D672E-929C-46CD-91C0-28ECB9C94D80.com --allowed-indexes app_altrisk_ui
--use-ack=false --disabled=false --token B5F88C9B-8C17-411C-91FE-7166E023168Cm --allowed-indexes app_compliance
--use-ack=false --disabled=false --token 1AF6F0EC-6E8D-4BEE-8EDE-4DCDE71F0074.com --allowed-indexes app_hsc_ui
답변1
변수가 포함된 파일은 Excel에서 내보낸 csv 형식입니다. 일반 텍스트 파일을 사용하여 변수 파일을 다시 만들었더니 문제가 사라졌습니다.