我正在读某人的 awk 脚本。从标题开始#!/usr/bin/env awk -f。env 命令没有选项-f。因此,他们必须传递-fawk 命令的选项。我查看了 awk 的手册页。它表示Awk 扫描每个输入文件,查找与 prog 中字面指定的一组模式或指定为 -f progfile 的一个或多个文件中的任何一组模式相匹配的行。对于每个模式,可以有一个关联的操作,当文件的一行与该模式匹配时将执行该操作。
根据我的理解,这意味着 awk 通过搜索具有 progfile/prog 中指定模式的行来处理输入文件,具体取决于您是否在 awk 中使用 -f 选项。并且根据所使用的模式,对输入文件中找到的行执行关联的操作。我的问题是......运行 awk 脚本文件时它是如何工作的?我们没有在该行中指定 progfile #!/usr/bin/env awk -f。awk 脚本将使用什么模式?或者这是否意味着我们在运行 awk 脚本时必须传递 progfile?如果是这样的话,在脚本中指定 -f 选项不是多余的吗?如果我们不指定 progfile,-f 选项是否会默认被忽略或抛出错误?
为了更好地理解这一点,我编写了一个简单的 awk 脚本并将其保存为 test.awk
#!/usr/bin/env awk -f
BEGIN { print "START" }
Run Code Online (Sandbox Code Playgroud)
当我运行它时,字符串“START”会打印在屏幕上。
prachis-mbp-2:~ pskhadke$ ./test.awk
START
Run Code Online (Sandbox Code Playgroud)
如果我从 awk 脚本的第一行删除该-f选项并运行它,则会收到以下错误:
prachis-mbp-2:~ pskhadke$./test.awk
awk: syntax error at source line 1
context is
>>> …Run Code Online (Sandbox Code Playgroud) 正如问题所暗示的,我有一个简单的java应用程序(又名“简单的主”),需要初始化一个hibernate连接,其信息位于context.xml.
经过大量搜索和一些技巧后,我得出以下结论:
public static void main(String[] args) {
//JNDI provider is needed and RMI registry has one...
try {
java.rmi.registry.LocateRegistry.createRegistry(1099);
System.out.println("RMI registry ready.");
} catch (Exception e) {
System.out.println("Exception starting RMI registry:");
e.printStackTrace();
}
new InitialContext().readContextXml("context.xml");//of course there is nothing like that. But is there an equivalent?
String result = thatWillConnectWithHibernate();
System.out.println(result);
}
private static String thatWillConnectWithHibernate() {
//does stuff
}
Run Code Online (Sandbox Code Playgroud)
那么有没有一种简单的方法可以从 xml 文件创建一个 InitialContext 呢?我对手动解析文件不感兴趣,我可以自己做。
GitHub 有多种合并拉取请求的选项。一种是对Squash and merge。选择此选项时,所有中间提交在合并之前都会被压缩。奇怪的是,在网络图中(insights 选项卡),分支(从中创建拉取请求)似乎没有合并到 master 中。如果您使用 Sourcetree,您会看到同样的事情。
Squash and merge如果您选择Merge pull request选项,而不是选择,您会看到分支与 master 合并。
为什么会发生这种情况?我本来希望分支在Squash and merge操作中压缩中间提交后与 master 合并。