사용자와 동일한 이름을 가진 파일에 세 개의 입력을 어떻게 저장할 수 있습니까?

사용자와 동일한 이름을 가진 파일에 세 개의 입력을 어떻게 저장할 수 있습니까?
#!/bin/bash                                                                     
while :                                                                         
        do                                                                      
        echo "Please enter your tittle:"                                        
        read TITTLE                                                             
        echo "Please enter your surname:"                                       
        read SURNAME                                                            
        echo "Please enter your ID No."                                         
        read ID                                                                 

        if [ "$TITTLE" = "" ] || [ "${TITTLE//[!0-9]}" != "" ];                 
        then                                                                    
        echo "Enter your valid tittle without special characters."              
        echo "Please try again."                                                
        continue                                                                  
        fi                                                                      

        if [ "$SURNAME" = "" ] || [ "${SURNAME//[!0-9]}" != "" ];               
        then                                                                    
        echo "Enter your valid surname without special characters."             
        echo "Please try again."                                                
        continue                                                                  
        fi                                                                      

        if [ "$ID" = "" ] || [ "${ID//[0-9]}" != "" ];                          
        then                                                                    
        echo "Enter your valid ID No. without special characters."              
        echo "Please try again"

        else                                                                    
        echo "Thank you" $TITTLE $SURNAME                                       
        break                                                                   
fi                                                                              
done

답변1

가정: $SURNAME사용자 이름입니다

$TITTLE$SURNAME의 내용을 , 및 $ID의 내용으로 명명된 파일 에 쓰 려면 $SURNAME다음과 같이 코드를 수정하면 됩니다.

...
    else
    echo "Thank you $TITTLE $SURNAME, your information will be stored in \"$SURNAME.txt\""
    echo -e "$TITTLE\n$SURNAME\n$ID" > "$SURNAME.txt"
    break
...

그 중 -e를 사용하면 echo를 \n"개행 문자"로 인식할 수 있습니다.

답변2

관련 질문에 대한 답변에 쓴 것처럼 "3개의 입력을 검증하는 스크립트", 스크립트 출력은 다음을 통해 리디렉션될 수 있습니다.

$ ./script.sh >"$USER.txt"

이 변수는 $USER사용자 이름으로 대체됩니다(이 변수도 $LOGNAME일반적으로 셸이나 시스템에 의해 사용자 이름으로 설정됩니다).

스크립트에서 읽은 성을 사용하려면 이 줄을 변경하세요.

echo "Thank you" $TITTLE $SURNAME          

입력하다

echo "Thank you $TITTLE $SURNAME" >"$SURNAME.txt"

echo이렇게 하면 사용자가 입력한 성으로 이름이 지정되고 .txt파일 이름 끝에 추가된 파일로 결과가 리디렉션됩니다 (분명히 선택 사항임). 기존 파일을 덮어쓸지 여부는 확인되지 않습니다.

터미널에 출력하려면 다음 명령을 사용하여 데이터를 복사합니다 tee.

echo "Thank you $TITTLE $SURNAME" | tee "$SURNAME.txt"

세 비트의 데이터를 모두 파일로 출력하려면 다음을 사용하십시오.

{
    printf 'ID = %s\n' "$ID"
    printf 'surname = %s\n' "$SURNAME"
    printf 'title = %s\s' "$TITTLE"
} >"$SURNAME.txt"

이와 같이 중괄호 안에 명령 그룹을 그룹화하면 단일 리디렉션으로 그룹의 모든 출력을 리디렉션할 수 있습니다.

바라보다"왜 printf가 echo보다 나은가요?"이것이 변수 문자열을 인쇄할 때 printf"대신에 "를 사용하는 경향이 있는 이유입니다.echo

관련 정보