我正在尝试了解此问题的答案之一:
无法使用“#!/ usr / bin / env
python”将参数传递给python
#!/bin/sh
''''exec python -u -- "$0" ${1+"$@"} # '''
这很好用,但是我不明白为什么它在该行的开头使用四个刻度而不是三个刻度。
另外,为什么哈希值接近该字符串的末尾?
Python支持三引号字符串:
'''something'''
Shell仅支持单引号字符串:
'something'
通过使用 四个 引号,sh
将其视为2个空字符串,但Python将前三个视为三引号字符串的开头,并将第四个作为字符串值的一部分。
然后,该行的其余部分由解释为命令sh
,但由Python解释为字符串的一部分。
在#
随后形成尽可能评论sh
而言,但它仍然是一个字符串到Python,有三个结束引号关闭它。
因此,总结一下:
sh
sees: 空字符串(''
) - 空字符串(''
) - 命令(exec python -u -- "$0" ${1+"$@"}
) - 注释(# '''
)'exec python -u -- "$0" ${1+"$@"} #
)因此sh
执行该命令,并python -u --
用脚本名称和其余命令行参数替换自身,Python读取该文件,然后看到一个初始字符串文字,该文字不会随处可见。
因为它是文件中的第一个字符串文字,所以它将被设置为__main__
模块的文档字符串,但这与主脚本无关紧要。
问题内容: 我正在阅读有关ConcurrentModificationException以及如何避免它的信息。找到了一篇文章。该文章中的第一个清单具有与以下相似的代码,这显然会导致异常: 然后,它继续以各种建议解释如何解决该问题。 当我尝试重现它时,我没有遇到异常! 为什么我没有得到例外? 问题答案: 根据JavaAPI文档,Iterator.hasNext不会抛出。 检查后,您从列表中删除了一个
因此,下面的代码,从txt文件中取序列号作为参数,在我的计算机上正常工作。每个数字都写在一行上。下面是代码: 但它在CodeEval中不起作用。站点编译器是这么说的: Fontconfig错误:无法加载默认配置文件线程“main”java.awt.HeadLessException:未设置X11显示变量,但此程序执行了需要它的操作。在java.awt.GraphicsEnvironment.Che
问题内容: 我正在阅读DigitalOcean的golang客户程序。我注意到他们在变量中创建了* Op结构的实例。示例:https: //github.com/digitalocean/godo/blob/master/droplets.go#L32 为什么需要此行? 问题答案: 该行是*DropletsServiceOp满足DropletsService接口的编译时检查。 该行对程序的执行没有
令牌“if”的语法错误(应在此令牌之后 谢谢你的建议!
问题内容: 当我在外壳中研究这个问题的答案时,我注意到,即使指向系统上的两个命令,它们的行为也有所不同。首先,输出 是: 但是,通过以下命令调用以下命令: 返回此错误: 通过以下命令运行相同命令时: 成功执行,以下是输出: 供参考,以下是以下内容: 为什么两个调用的行为不同? 问题答案: 查看(bash在C语言中实现)的值,以确定如何调用它。 当作为调用它的行为被记录在手册中: 如果使用name调
在这里测试一下。 然而,我想匹配一对字符后的字符,所以我想我可以简单地把它放在后面: 不幸的是,这与任何东西都不匹配。