Se você quiser fazer um loop pelas linhas de um arquivo, você pode usar o read
integrado em um loop como este:
while IFS= read -r line; do
echo "$line"
done <input_file.txt
O conteúdo da linha é armazenado na variável line
(você pode escolher qualquer outro nome). Consulte Noções básicas sobre o IFS para obter mais explicações. Sem IFS=
, o espaço em branco inicial ou final é removido, o que pode ser desejável no seu caso.
Tenha em atenção que >stockquote.txt
trunca o ficheiro de saída de cada vez. Coloque-o em volta de todo o comando ou use >>stockquote.txt
que é anexado ao arquivo. Se você usar >>
, tome cuidado para que o arquivo não fique vazio quando o script for iniciado.
Este snippet executa o programa stock
para cada linha e armazena a saída em stockquote.txt
com uma linha em branco ( echo
sem argumento) entre cada símbolo.
while read -r line; do
stock "$line"
echo
done <input_file.txt >stockquote.txt
Certifique-se de que stock
seja executável. Se for um script de shell, certifique-se de que ele comece com #!/bin/sh
. Se não estiver no caminho de pesquisa do comando $PATH
, especifique o caminho explicitamente (por exemplo, ./stock
se estiver no diretório atual).
Você também pode usar xargs
, mas tenha em mente que sua sintaxe de entrada é peculiar: não usa novas linhas como delimitadores, mas espaço em branco e trata \'"
como caracteres de aspas (com a sintaxe de entrada padrão - apenas para fazer pior ainda, o xargs tem sintaxes de entrada alternativas dependendo de suas opções de linha de comando). Para o seu caso de uso, isso provavelmente é adequado também, e é mais curto, mas você perde a oportunidade de ter espaços em branco ou citar caracteres em símbolos, para pular linhas de comentários, etc.
xargs -n 1 stock <input_file.txt >stockquote.txt