我知道可以用-v标志反转grep输出.有没有办法只输出匹配线的非匹配部分?我问因为我想使用grep的返回码(sed不会有).这是我所得到的:
tags=$(grep "^$PAT" >/dev/null 2>&1)
[ "$?" -eq 0 ] && echo $tags
Run Code Online (Sandbox Code Playgroud) def foo
true && return false
end
def bar
true and return false
end
Run Code Online (Sandbox Code Playgroud)
foo方法导致语法错误.bar没有.为什么?
假设我想用return语句评估单行(类似于某个常用的shell/bash表达式),这是推荐的方法吗,还是有更推荐的方法?
我正在学习shell,我希望能够遍历一些变量.我似乎找不到任何人做过这个的地方,所以我不确定它是否可能.
基本上我只想通过对每个变量使用相同的sed命令来省去自己的麻烦.但是代码显然不起作用.我的问题是,是否可以循环变量,如果不是,我应该怎么做呢?
title="$(echo string1)"
artist="$(echo string2)"
album="$(echo string3)"
for arg in title artist album do
$arg="$(echo "$arg" | sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g')"
done
Run Code Online (Sandbox Code Playgroud)
这是错误:
line 12: syntax error near unexpected token `$arg="$(echo "$arg" | sed -e 's/&/\&/g' -e 's/</\</g' -e 's/>/\>/g')"'
Run Code Online (Sandbox Code Playgroud) 我正在Netbeans中使用Maven开始一个Java项目.我写了一些代码来使用Logger类进行日志记录.但是,日志记录似乎不起作用.在我的程序开始时,我运行:
Logger.getLogger(ProjectMainClass.class.getName()).setLevel(LOG_LEVEL);
Logger.getLogger(ProjectMainClass.class.getName()).log(LOG_LEVEL, "Hello Logger");
Run Code Online (Sandbox Code Playgroud)
第二行从不将我的消息输出到Netbeans的输出屏幕.
System.out.print语句确实显示在输出中.
我觉得我需要设置一些配置选项.我一直在搜索,但我无法弄明白(过去我总是使用System.out和调试器进行调试,但我认为记录器功能更强大(更令人困惑)).
我最近决定将PHP合并到我的网站中,但我之前从未使用过它,所以我不熟悉这些功能......
我的问题是我在每个PHP页面上使用include()方法作为我的页眉和页脚,如下所示:
<?php include('../php/header.php'); ?>
Run Code Online (Sandbox Code Playgroud)
这会从/ public_html目录导航到我网站根目录下的/ php目录.为了考虑文件可能位于的不同子目录级别,我在每个PHP页面的顶部添加:
<?php
/* Path prefix so relative links work correctly */
$path = "../";
?>
Run Code Online (Sandbox Code Playgroud)
和../可以用../../替换为另一个子目录向下等文件,在页眉和页脚文件中,链接的开头如下:
<a href="<?php echo($path); ?>index.php" title="Home">Home</a>
Run Code Online (Sandbox Code Playgroud)
一切都运行正常......直到我尝试使用wordpress,它位于我网站的子目录中.Wordpress使用动态页面,因此有时页面位于低于其他页面的子目录中,并且链接将无法使用此方法.在我的旧网站设计中,我使用标记设置我网站的root/public_html目录的所有链接引用.但是,PHP不受此标记的影响.我需要的是一个方法来设置博客上我的include()方法的/ public_html目录中的链接引用.
有这样的方法还是有更好的方法来做我正在做的事情?
我正在为Android编写一个应用程序,它会生成一个定期检查wifi状态并根据某些条件更改它的服务.我的问题是,每当我尝试创建一个WifiManager对象来检查wifi的状态(并且可能控制它)时,它就会给我一个未初始化的对象.这是代码:
public class WifiCheckerService extends Service {
// Service code and run() method
private void checkWifi() {
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
System.out.println(wifi.getConnectionInfo());
// Rest of code
}
}
Run Code Online (Sandbox Code Playgroud)
这是代码到达此代码时日志中的行.
02-18 05:22:59.274: INFO/System.out(1170): SSID: <none>, BSSID: <none>, MAC: <none>, Supplicant state: UNINITIALIZED, RSSI: -200, Link speed: -1, Net ID: -1
Run Code Online (Sandbox Code Playgroud)
显然我没有得到系统WifiManager对象.我知道这与我在一个线程服务中的事实有关,但我仍然无法理解这个概念,并且对于它为什么不起作用以及如何解决它的一些解释将非常感激.
(在一种不相关的说明中,我认为解释也可以解释为什么我不能Toast.makeText(getBaseContext(), "Checking Wifi...", Toast.LENGTH_SHORT).show();在服务中使用该行)