사용자 입력을 텍스트 파일의 내용과 비교하는 방법은 무엇입니까?

사용자 입력을 텍스트 파일의 내용과 비교하는 방법은 무엇입니까?

저는 사용자가 자신의 설정을 텍스트 파일에 저장할 수 있는 스크립트를 만들고 있습니다. 저장된 설정을 사용하려면 설정 이름을 입력해야 합니다. 그런 다음 스크립트는 사용자의 입력을 비교하여 텍스트 파일에서 이름을 찾습니다. 일치하는 이름이 발견되면 해당 텍스트 파일에서 전체 줄을 추출합니다. 지금까지 내 코드는 다음과 같습니다.

echo enter setting name
    read name
    #count=0
    while IFS= read line
    do
        if [ "$name" == "$settingName" ]
        then
            cp **/*"$ft1" $dir1
        else
            echo "file doesnt exist"
        fi
    done < preco.txt

변수를 저장하는 데 사용하는 코드는 다음과 같습니다.

echo save settings?
    read decision
    if [ "$decision" = "y" ]
        then
        echo enter settings name
        read settingName

        echo $settingName $dir1 $ft1 >> preco.txt
    else
        echo "bye"
        exit

$dir1과 $ft1을 cp에 입력하고 싶습니다.

답변1

설정을 저장하는 코드에서 추측할 수 있지만 설정 파일의 예를 포함하면 좋을 것입니다.

코드의 한 가지 문제는 "$settingName".

매개변수에 공백이 없다고 가정하면 다음과 같이 작동합니다.

echo enter setting name
read name
found=false
while read settingName dir1 ft1
do
    if [ "$name" == "$settingName" ]
    then
        cp "$ft1" $dir1
        found=true
    fi
done < preco.txt
if ! $found; then
    echo "$name not found"
fi

이 문은 read settingName dir1 ft1파일의 세 필드를 preco.txt명명된 변수로 읽어옵니다.

또 다른 요점은 일치하지 않는 모든 줄에 대해 오류 메시지를 표시하고 싶지 않다는 것입니다. 파일을 읽고 일치하는 줄이 없는 경우에만 오류 메시지를 표시해야 합니다.

관련 정보