Linux命令创建Python文件:如何同时实现换行与保留\n字符
在Kali Linux中创建含保留
\n字符的Python脚本 你遇到的问题源于Bash双引号的转义规则:双引号内的\\n会被解析为\n,再加上echo -e会把\n转成实际换行,最终Python脚本里的字符串参数变成了换行而非字面的\n,导致subprocess调用异常。以下是几种可靠的解决方法:
方法1:使用Here Document(推荐)
这种方式最直观,直接按脚本原样写入,无需处理复杂转义:
cat > script.py << 'EOF' import subprocess for i in range(3): if i>1: subprocess.run(['echo', 'first sentence.\n']) else: subprocess.run(['echo', 'second sentence.\n']) EOF
- 要点:
'EOF'必须用单引号包裹,这样Shell不会解析内容中的任何转义或变量,完全原样写入文件。
方法2:使用printf命令
printf的转义规则更可控,能明确区分文件换行和字面\n:
printf "import subprocess\nfor i in range(3):\n\tif i>1:\n\t\tsubprocess.run(['echo', 'first sentence.\\n'])\n\telse:\n\t\tsubprocess.run(['echo', 'second sentence.\\n'])\n" > script.py
- 原理:
\n会被printf解析为文件的换行;\\n会被解析为字面的\n字符,保留在Python脚本的字符串中。
验证脚本正确性
执行生成的脚本:
python3 script.py
预期输出:
second sentence second sentence first sentence
内容的提问来源于stack exchange,提问作者user27749118
相关产品推荐
相关产品推荐

