我正在制作一个bash脚本,它将打印并将复杂的参数传递给另一个外部程序.
./script -m root@hostname,root@hostname -o -q -- 'uptime ; uname -a'
Run Code Online (Sandbox Code Playgroud)
如何打印原始参数:
-m root@hostname,root@hostname -o -q -- 'uptime ; uname -a'
Run Code Online (Sandbox Code Playgroud)
使用$@和$*删除uptime ; uname -a可能导致意外结果的单引号.我的脚本不需要解析每个参数.我只需要打印/记录参数字符串并将它们传递给另一个程序,确切地说它们是如何给出的.
我知道我可以用类似的东西来逃避引号, "'uptime ; uname -a'"但我无法保证用户会这样做.
我有一个Main方法,它创建一个名为SysTrayApp的消息循环:
void Main()
{
Application.Run(new SysTrayApp());
}
Run Code Online (Sandbox Code Playgroud)
我的SysTrayApp类将ContextMenu添加到System Tray图标,然后启动另一个名为的消息循环MouseHook.MouseHook是一个用于管理鼠标事件的类.(以此课程为蓝本.)
class SysTrayApp : Form
{
public SysTrayApp()
{
// Does some GUI work
// Then starts another message loop
Application.Run(new MouseHook());
}
}
Run Code Online (Sandbox Code Playgroud)
_
class MouseHook : Form
{
public MouseHook()
{
// Does some hooking stuff
}
}
Run Code Online (Sandbox Code Playgroud)
在SysTrayApp中,Application.Exit()当用户从上下文菜单中选择"退出"选项时调用.问题是我必须调用Exit两次(或添加另一个Application.Exit)才能结束应用程序.这是预期的,但我觉得我这样做是错误的.打电话Application.Exit()两次对我来说似乎不对,但我是C#世界的新手.应该SysTrayApp和MouseHook一个大班组合?MouseHook似乎它不应该是Windows.Form的一部分.也许MouseHook需要在一个新的线程?有什么建议?
编辑:哎呀.MouseHook没有第三个Application.Run()
我想我是在想这个.还在探索C#,就像我说的那样.但这是有效的:
Application.Run(new SysTrayApp());在Main()是你所需要的.要启动MouseHook …
我正在尝试构建一个将按以下方式排序的查询,Name并Year使用更高年份过滤重复项并在表中返回这些记录.我的数据目前看起来像这样:
ID-----Name-----Year
1 Bob 2010
2 John 2014
3 Bob 2004
4 Eric 2005
Run Code Online (Sandbox Code Playgroud)
数据应该主要按顺序进行排序,Name然后按Year降序进行二次排序,如下所示:
ID-----Name-----Year
3 Bob 2004
1 Bob 2010
4 Eric 2005
2 John 2014
Run Code Online (Sandbox Code Playgroud)
然后重复Name记录应该过滤只返回最低值,Year如下所示:
ID-----Name-----Year
3 Bob 2004
4 Eric 2005
2 John 2014
Run Code Online (Sandbox Code Playgroud)
我尝试了类似的东西SELECT DISTINCT,HAVING COUNT但我似乎无法得到它.可能缺少一些简单的东西.有帮助吗?