bash를 사용하여 txt 파일에서 변수 읽기

bash를 사용하여 txt 파일에서 변수 읽기

저는 배쉬를 처음 접했습니다.

텍스트 조회에서 데이터를 읽고 일부 변수를 선언하는 스크립트를 작성하려고 합니다. 아래 예에서는 아래와 같이 탭으로 구분된 파일 "ab.txt"를 읽습니다.

a->AA

b->BB

여기서 ->는 탭을 의미합니다.

이 데이터를 읽으려면 다음 코드를 사용하고 있습니다.

#!/bin/bash
while read line
do
    tmp=(${line///})
    fieldName=${tmp[0]}

    case $fieldName in
    "a")
        a=${tmp[1]}
        ;;
    "b")
        b=${tmp[1]}
        ;;
    esac

done < "ab.txt"


echo "a:"
echo $a 

echo "b:"
echo $b

echo "concat a,b"
echo $a$b

echo "concat b,a"
echo $b$a

이렇게 하면 "a"와 "b"는 괜찮지만 a와 b를 연결하지는 않습니다! 출력은 다음과 같습니다:

a:
AA
b:
BB
concat a,b
BB
concat b,a
AA

내가 뭘 잘못했나요?

답변1

@steedriver가 문제를 발견했습니다. Windows에서는 줄 끝에 이스케이프 문자가 있지만 Linux에서는 그렇지 않습니다. Windows에서 입력 텍스트 파일 ab.txt를 만들었으므로 Linux는 추가 문자를 a,b 변수로 읽습니다. 내 솔루션은 dos2unix를 사용하여 ab.text를 변환하는 것이었고 이것이 작동했습니다.

관련 정보