尽管最后反斜杠,printf的参数仍被作为单独的命令读取

时间:2016-12-31 03:43:02

标签: bash syntax printf

我在这个脚本中放了两个看起来与我几乎相同的printf命令。第一个命令是将输出打印到文本文件中。第二个命令应该对另一个文本文件执行相同的操作,但它会打印到标准输出,然后输出一些错误。我不记得两者之间的区别

这是我正在使用的脚本

printf "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n" "test1" \
                 "test2" \
                 "test3" \
                 "test4" \
                 "test5" \
                 "test6" \
                 "test7" \
                 "test8" \
                 "test9" > testfile.txt

printf "%s\n%s\n%s\n%s\n%s\n" "testa" \ 
        "testb" \ 
        "testc" \
        "testd" \
        "teste" > testfile2.txt

这是输出

testa




./script.txt: line 12: testb: command not found
./script.txt: line 14: testc: command not found

testfile.txt有这个

test1
test2
test3
test4
test5
test6
test7
test8
test9

testfile2.txt什么都没有

1 个答案:

答案 0 :(得分:4)

shell延续字符\应该始终是换行符之前的最后一个字符。如果你有尾随空格,它们会使反斜杠的效果无效,而下一行被shell视为一个独立的命令。