cerajolis, fiz algumas alterações no seu script e comentarios, de uma olhada:
http://pastebin.ca/353615 Com o tempo vc vai pegando o jeito de fazer coisas mais complexas e com mais performance, por enquanto é para dominar os laços while. veja como vc poderia fazer sem nenhum: #!/bin/sh CHAR='X' [ "$1" ]|| { cat <<-EOF Missing Parameter usage: $(basename $0) lines [col] EOF exit 1 } [ "$2" ] && COL=$2 || COL=80 OUT_FILE=/path/to/bigfile # !!!!! seq -s ${CHAR} ${COL} | tr -d '[0-9]'> ${OUT_FILE} seq -s ';' -f 'p%g' $1 | tr -d '[0-9]'| xargs -i sed -n {} -i ${OUT_FILE} Claro, tem muita mutreta ai, mas é divertido. On 2/12/07, cerajolis <[EMAIL PROTECTED]> wrote: > > Olá componentes do grupo, estou estudando pelo livro do Randal K. > Michael - Dominando Unix Shell Scripting e estou precisando de um > auxílio para resolver um problema em um exercício que grava > caracteres para formar linhas em arquivo. > Eu consigo criar o arquivo, porém não as linhas, por isso estou > recorrendo ao grupo, talvez alguém já tenha executado este exercício e > tenha a solução. > > No exercício eu digitei todas as variáveis em minúsculas para não > confundir com as variáveis de ambiente. > E estou utilizando o Korn Shell > Para executar uso o comando ./bigfile.ksh <número_de_linhas_desejado> > > Antecipadamente agradeço. > > #!/bin/ksh > # > #set -n # verifica sintaxe > #set -x # depura Shell script > > > # Define Função > > Function usage { > > echo "\n........USAGE ERROR........\n" > > echo "\Nusage: $SCRIPT_NAME number_of_80_char_lines\n" > > > # Verifica o número correto de parâmetros > > if (( $# !1 )) # Procurando um parametro > then > usage # Houve erro de uso > exit # Sai com um erro de uso > fi > > > # Define arquivos e variáveis aqui > > LINE_LENGTH=80 # Número de caracteres por > linha > OUT_FILE=/scripts/bigfile # Novo arquivo a ser criado > >$OUT_FILE # Inicializa um > arquivo de tamanho zero > SCRIPT_NAME=$(basename $0) # Extrai o nome do script > TOTAL_LINES=$1 # Número total de linhas a > criar > LINE_COUNT=0 # Contador de caracteres > CHAR=X # Caractere a > escrever no arquivo > > # Início de Main > > while (( LINE_COUNT < TOTAL_LINES )) # Especificado por $1 > do > CHAR_COUNT=0 #Inicializa o > contador em zero a cada nova linha > > While (( CHAR_COUNT < LINE_LENGTH )) # Cada linha tem > tamanho fixo > Do > Echo "${CHAR}\c" > $OUT_FILE # Ecou um único caractere > > (( CHAR_COUNT = CHAR_COUNT +1 )) # Incrementa contador > de caractere > done > > (( LINE_COUNT = LINE_COUNT+1 )) # Incrementa contador de > linhas > > echo > $OUT_FILE #Dá um novo caractere de new line > done > > > -- Tiago B Peczenyj Linux User #405772 # cd /pub # more beer [As partes desta mensagem que não continham texto foram removidas]
