Redirecionando a saída de um script em um arquivo? [fechadas]

0

Eu quero que o usuário seja capaz de nomear um arquivo a ser criado e, em seguida, ter a saída do script redirecionada para esse arquivo. O script criará uma longa lista de um diretório e contará o número de arquivos nesse diretório. Isso é o que eu tenho até agora:

echo -n "Please enter the name of a file to be created: "

read FILENAME

touch FILENAME

ls -l exampledir

echo

ls -l exampledir | wc -l

Eu posso não estar usando a leitura corretamente, não tenho muita certeza.

Editar

Eu percebi a maior parte, aqui está o novo código:

echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > FILENAME

echo >> FILENAME

ls -l Assign_7 | wc -l >> FILENAME

A única coisa que não consigo descobrir é como obter o nome do arquivo que o usuário digitou. Tem o material certo dentro, mas agora o arquivo é sempre chamado FILENAME

2º EDITAR

Descobri isso. Só precisava adicionar $ antes de cada FILENAME

    
por user2120893 05.09.2016 / 02:34

1 resposta

1

Muito simples:

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

ls -l Assign_7 > $FILENAME
echo >> $FILENAME
ls -l Assign_7 | wc -l >> $FILENAME

Isso é chamado de Parameter Expansion , consulte man bash para uma explicação completa.

Além disso, há um formulário um pouco mais curto que simplifica um pouco o script e faz com que o bash abra um arquivo de saída apenas uma vez:

#/bin/bash
echo -n "Please enter the name of a file to be created: "

read FILENAME

exec > $FILENAME
ls -l Assign_7
echo ""
ls -l Assign_7 | wc -l

Este último formulário faz o redirecionamento do stdout do shell atual para um arquivo executando o comando exec > $FILENAME , assim a saída de todos os comandos subsequentes que o shell executa também é direcionada para esse arquivo.

    
por 05.09.2016 / 06:25