我正在尝试将Python程序写入一行Bash中的文件。我正在尝试这个:
$ printf "#\!/usr/bin/python3\nprint('hi\!')\nwhatever()" > whatever.py
但是这给了:
#\!/usr/bin/python3
print('Hi\!')
whatever()
如何输出:
#!/usr/bin/python3
print('Hi!')
whatever()
答案 0 :(得分:2)
最好的方法是使用Here Document:
cat > whatever.py <<EndOfPythonProgram
#!/usr/bin/python3
print('hi!')
whatever()
EndOfPythonProgram
但是既然你想在一行中写下所有内容,你可以使用以下命令:
printf '%s\n' '#!/usr/bin/python3' "print('hi"'!'"')" 'whatever()' > whatever.py
printf %s yourString
代替printf yourString
。这就是printf
应该被使用的方式(在这种情况下不是必需的,但对于一般情况更安全)。 %s\n
printf
的每个附加参数都打印为一行。!
。!
,用双引号引用其余部分。在bash
中,字符串ab
可以写成:ab
,"ab"
,'ab'
,"a"'b'
,... 答案 1 :(得分:1)
您可以使用:
set +H # disable history expansion
printf "#!/usr/bin/python3\nprint('hi!')\nwhatever()\n"
set -H # enable history expansion again
#!/usr/bin/python3
print('hi!')
whatever()