Shell do Linux - Determinadas Variáveis e Métodos NÃO anexando ao arquivo de texto

1

Estou com um problema ao obter as variáveis $myname , $filename e um método que conta todos os registros em outro arquivo, wc -l < hs_alt_HuRef_chr10.fa >> "$CuestaP.txt , para anexar ao arquivo de texto CuestaP.txt , vocês podem ajudar estou fora? O código está abaixo Não vejo por que eles não estão anexando.

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

Minha saída:     Olá meu nome é:     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?
    
por Pablo Cuesta 25.03.2018 / 21:39

2 respostas

0

O problema é o nome do arquivo $CuestaP.txt . Se você quiser que $ seja literalmente parte do nome do arquivo, precisará de aspas simples ou uma barra invertida: '$CuestaP.txt' , \$CuestaP.txt . Ou é suposto ser uma variável, mas depois ambos se esqueceram de defini-la e misturá-la com um literal.

Seus dados estão no arquivo .txt

    
por 25.03.2018 / 21:45
0

[ -s *.fa ] falhará se houver vários arquivos com nomes de arquivos que terminem em .fa . Você pode testá-lo com um único nome de arquivo ( hs_alt_HuRef_chr10.fa ?) Ou fazer um loop:

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

Isso, junto com muito do resto das declarações de saída, assume que CuestaP é uma variável. $CuestaP.txt expandirá para o conteúdo dessa variável e .txt será adicionado ao final do valor.

Tanto quanto eu posso ver, $CuestaP expandirá para nada, e a maioria dos seus dados irá para um arquivo chamado .txt (um arquivo oculto no diretório atual).

    
por 30.03.2018 / 21:04