Linux 셸 - 일부 변수 및 메서드는 텍스트 파일에 추가되지 않습니다.

Linux 셸 - 일부 변수 및 메서드는 텍스트 파일에 추가되지 않습니다.

변수를 가져오고 $myname다른 파일의 모든 레코드를 계산하여 텍스트 파일에 추가하는 방법에 $filename문제가 있습니다 . 코드는 아래에 있는데 왜 첨부되지 않는지 모르겠습니다.wc -l < hs_alt_HuRef_chr10.fa >> "$CuestaP.txtCuestaP.txt

myname="Pablo Andres Cuesta"    #creates variable containing my name

echo "Hello my name is:"    
echo "$myname"            #Display myname
echo
echo "This program is called:"    
filename=$(basename "$0")    #Display name of file without ./
echo "$filename"

echo

echo "$myname" >> "$CuestaP.txt" #Puts myname inside text file
echo "$filename" >> "$CuestaP.txt" # Puts file name inside text file

echo "The number of records inside the file 'hs_alt_HuRef_chr10' are:"
wc -l < hs_alt_HuRef_chr10.fa
wc -l < hs_alt_HuRef_chr10.fa >> "$CuestaP.txt" #Put amount of records inside file



echo "$USER" >> "$CuestaP.txt" #Add username to text file
echo "$PWD" >> "$CuestaP.txt" #Add file location to text file


if [ -s *.fa ]; then
    # read the age from the file.
    # if the file exists and is not empty, see flags above
    echo "my *.fa file exists and has data in it" >> 
"$CuestaP.txt" 

else
echo "THIS DID NOT WORK CORRECTLY" >> "$CuestaP.txt" 

fi

echo
cat CuestaP.txt

내 결과: 안녕하세요. 제 이름은 Pablo Andres Cuesta입니다.

This program is called:
CuestaPOGpgm3.sh   

The number of records inside the file 'hs_alt_HuRef_chr10' are:
1842651

#myname is missing
#filename is missing
#my *.fa file exists and has data in it is missing
pcuesta    #my username went through though?
/home/pcuesta    #my pwd went through though?

답변1

문제는 파일 이름입니다 $CuestaP.txt. $실제로 파일 이름의 일부가 되도록 하려면 작은따옴표나 백슬래시( '$CuestaP.txt', ) 가 필요합니다 \$CuestaP.txt. 또는 이것은 변수로 간주되었지만 모두 정의하는 것을 잊어버리고 리터럴과 혼합했습니다.

귀하의 데이터는 파일에 있습니다.txt

답변2

[ -s *.fa ]로 시작하는 파일 이름이 여러 개인 경우 .fa단일 파일 이름( hs_alt_HuRef_chr10.fa? ) 또는 루프를 사용하여 테스트할 수 있습니다.

for name in *.fa; do
    if [ -s "$name" ]; then
        printf '"%s" has data in it\n' "$name"
    fi
done >>"$CuestaP.txt"

이는 나머지 출력 문의 대부분과 함께 CuestaP변수로 간주됩니다. $CuestaP.txt변수의 내용으로 확장되어 .txt값의 끝에 추가됩니다.

내가 아는 한, 는 $CuestaP무엇이든 확장될 것이며 대부분의 데이터는 .txt(현재 디렉토리의 숨겨진 파일)이라는 파일에 저장됩니다.

관련 정보