Limite de quantidade de texto de entrada de eco?

2

Estou tentando fazer

echo "foo
foo
foo
....[many many lines of foo here]
foo" > "/Users/myname/destination.txt"

através do Applescript, mas retorna um erro quando os caracteres nas linhas do foo atingem alguma quantidade (parece que são 255392 caracteres).

Por "através do Applescript", quero dizer que estou tentando isso com o "shell script" do AppleScript, que para o processo quando o status de saída é diferente de zero e retorna isso: "error "The command exited with a non-zero status." number 255

Este é o meu código do Applescript:

set mytext to "foo
foo
foo
....[many many lines of foo here]
foo"

do shell script ("echo " & quoted form of mytext & " > " & "/Users/myname/destination.txt")

Os dados de texto grandes reais (20000 + linhas, 285831 caracteres) que eu uso para entrada tem um monte de aspas e barras invertidas, e eu não quero estragar meus arquivos por colocar meus dados de texto diretamente no terminal e ter Ele interpreta erroneamente algumas partes dos meus dados de texto de entrada como comandos ou nomes de arquivos, então não estou verificando isso diretamente com o bash ainda.

Pode ser mais um problema do Applescript, mas achei que poderia receber uma resposta mais cedo aqui, então estou postando isso aqui.

Existe um limite de caracteres de entrada no eco, ou algo assim? Como posso evitar isso?

Edit: Eu escrevi isso em um shell script e o rodei no terminal e funcionou, mas eu gostaria de fazer isso através do Applescript e eu não tenho idéia do porque isso não funciona no Applescript:

#!/bin/bash

echo "aaaaaaa[100000+ "a"s in here]aaaa" > "/Users/myname/destination.txt"
    
por stacko 08.06.2016 / 05:12

1 resposta

1

Para preceder o texto em um arquivo de texto grande, tente um dos seguintes. (Esses são todos os comandos do shell; não sei o applescript).

echo "new text" > newfile
cat oldfile >> newfile
mv newfile oldfile

Esta é provavelmente a maneira mais simples.

Aqui está uma maneira muito avançada de fazer isso, que usa ex para edição de arquivos no local:

printf '%s\n' '0i' "Text to prepend" "Another line of text to prepend" . x | ex myfile

No entanto, a partir da sua edição, eu suspeito que você está simplesmente com uma falta de compreensão de como as citações funcionam no shell.

    
por 08.06.2016 / 05:55