我试图比较bash中的字符串.我已经找到了关于如何在stackoverflow上执行此操作的答案.在我尝试的脚本中,我使用的是Adam在提到的问题中提交的代码:
#!/bin/bash
string='My string';
if [[ "$string" == *My* ]]
then
echo "It's there!";
fi
needle='y s'
if [[ "$string" == *"$needle"* ]]; then
echo "haystack '$string' contains needle '$needle'"
fi
Run Code Online (Sandbox Code Playgroud)
我也尝试过你可以在第二篇文章中找到的ubuntuforums方法
if [[ $var =~ regexp ]]; then
#do something
fi
Run Code Online (Sandbox Code Playgroud)
在这两种情况下我都收到错误:
[[: not found
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我了解到,当您在Java中修改变量时,它不会更改它所基于的变量
int a = new Integer(5);
int b = a;
b = b + b;
System.out.println(a); // 5 as expected
System.out.println(b); // 10 as expected
Run Code Online (Sandbox Code Playgroud)
我假设对象有类似的东西.考虑这个课程.
public class SomeObject {
public String text;
public SomeObject(String text) {
this.setText(text);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
Run Code Online (Sandbox Code Playgroud)
在我尝试这段代码后,我感到困惑.
SomeObject s1 = new SomeObject("first");
SomeObject s2 = s1;
s2.setText("second");
System.out.println(s1.getText()); // second as UNexpected
System.out.println(s2.getText()); // second as expected
Run Code Online (Sandbox Code Playgroud)
请向我解释为什么更改任何对象会影响另一个对象.我知道变量文本的值存储在两个对象的内存中的相同位置.
为什么变量的值是独立的但与对象相关?
另外,如果简单的赋值不能完成工作,如何复制SomeObject?
场景是我需要至少访问两次值.即我正在使用记录器来跟踪应用程序中发生的情况.我想记录对象的名称,该函数正在处理,稍后使用相同的名称执行某些操作(即检查它是否包含某些字符串或将其放入数组中).
将名称存储在变量中:
foo(Bar bar){
String name = bar.getName();
logger.info("I am working with "+name);
this.doSomethingWith(name);
}
Run Code Online (Sandbox Code Playgroud)
或者两次调用getName():
foo(Bar bar){
logger.info("I am working with "+bar.getName());
this.doSomethingWith(bar.getName());
}
Run Code Online (Sandbox Code Playgroud)
我理解,在第一个场景中,我将创建一个新的String,为其赋值,然后两次检索该值.这样我使用更多的内存资源,对吗?
在第二种情况下,我是否访问了对象栏两次,然后两次访问它的名称.我想这不是一种干燥方法.但另一方面,我不是在记忆中重复自己,对吗?
哪种方法更好?
我正在开发一个项目,我需要生成java代码.当我遇到主方法上65535字节限制的问题时,我正在做一些测试.我生成的文件看起来像这样:
public class foo{
public static void main(String[] args){
//
//7000 lines later
//
}
}
Run Code Online (Sandbox Code Playgroud)
我认为通过这种方式生成文件我很聪明:
public class foo{
public static void bar(){
//
//7000 lines later
//
}
public static void main(String[] args){
bar();
}
}
Run Code Online (Sandbox Code Playgroud)
但我发现65535字节限制适用于每种方法.
我想知道在多种方法中"缓冲"指令是否能解决我的问题.对java文件的大小有什么限制吗?
我需要从 bash 中的字符串中删除转义字符。我得到一个数据结构,其中包含带有 / 转义的 url 路径,因此我收到了常规链接:
http://stackoverflow.com/questions/ask
Run Code Online (Sandbox Code Playgroud)
作为转义 / 之一:
http:\/\/stackoverflow.com\/questions\/ask
Run Code Online (Sandbox Code Playgroud)
现在我需要从第二个链接中删除 \。为此,我尝试使用 sed
`echo '"'${paths[$index]}'"' | sed "s@\\@@g"`
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
sed: -e expression #1, char 6: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)
如果我用 ie 替换 \\ 。_ 它就像一个魅力,并删除字符串中所有出现的 _。如何使用 sed 去除字符串中的转义字符?