从AppleScript导出到文本文件时,如何删除自动换行?

时间:2013-03-03 06:50:22

标签: terminal applescript echo

如果我参加了跑步命令

do shell script "echo hello > ~/Desktop/file.txt"

它会在我的桌面上生成一个文本文件,名称为file.txt,内容为

  

您好

     
    

(想象一下这里有一个空白行)

  

如何防止它创建此行,我无法在线找到任何资源。或者我的在线选项是在创建后找到某种方法将其删除?

3 个答案:

答案 0 :(得分:1)

我相信这是:

do shell script "printf hello > ~/Desktop/file.txt"

答案 1 :(得分:1)

DigiMonk的代码有效。

但是给未来的读者留言:

原始海报代码:

do shell script "echo hello" > "~/Desktop/file.txt"

发布错误,永远不会按原样运作。 Applescript将编译它。但实际上它是'你好大于〜/ Desktop / file.txt

正确的表格:

引用并转义文本字符串的引号。 (如果文本字符串很长并且包含空格,则更好的选项。)

do shell script "echo \"hello world\" > ~/Desktop/file.txt"

或不使用引号。

do shell script "echo hello > ~/Desktop/file.txt"

另请注意,使用波浪号〜符号时,无法引用文件路径。 波形符号用于指向用户主目录。引用它将阻止它正常工作。

答案 2 :(得分:1)

do shell script "printf %s " & quoted form of "hel'\\%slo" & " > ~/Desktop/file.txt"

printf aa%sbb会打印aabb。如果输入长度超过getconf ARG_MAX字节(当前大约300 kB),则此方法不起作用。

这也适用于更长的字符串:

set f to POSIX file ((system attribute "HOME") & "/Desktop/file.txt") as text
set b to open for access f with write permission
set eof b to 0
write "α" to b as «class utf8»
close access b

如果没有as «class utf8»,该文件将保存为MacRoman。 as Unicode text是UTF-16。

do shell script使用/ bin / sh,因此除非您添加do shell script "echo -n hello",否则-n hello会打印shopt -u xpg_echo