echo 输入文字数量有限制吗?

echo 输入文字数量有限制吗?

我正在尝试做

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

通过 Applescript,但当 foo 行中的字符达到一定数量时(看起来有 255392 个字符),它会返回错误。

通过“通过Applescript”,我的意思是我正在尝试使用AppleScript的“do shell脚本”,当退出状态非零时,它会停止进程并返回:"error "The command exited with a non-zero status." number 255

这是我的 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")

我用于输入的实际大文本数据(20000+行,285831个字符)有很多引号和反斜杠,我不想通过将我的文本数据直接放入终端并让它误解一些来弄乱我的文件我的输入文本数据的一部分作为命令或文件名,所以我还没有直接使用 bash 检查这一点。

这可能更多是 Applescript 的问题,但我想我可能会在这里更快地得到回复,所以我将其发布在这里。

echo 中输入文本的字符数有限制吗?我怎样才能避免这种情况?

编辑:我在 shell 脚本中编写了这个并在终端上运行它并且它起作用了,但是我想通过 Applescript 来执行此操作,但我不知道为什么这在 Applescript 中不起作用:

#!/bin/bash

echo "aaaaaaa[100000+ "a"s in here]aaaa" > "/Users/myname/destination.txt"

答案1

要将文本添加到大文本文件中,请尝试以下操作之一。 (这些都是 shell 命令;我根本不懂 applescript。)

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

这可能是最简单的方法。

这是一种非常先进的方法,用于ex就地文件编辑:

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

然而,从您的编辑来看,我怀疑您只是对 shell 中的引用工作原理缺乏了解。

相关内容