小编cod*_*ter的帖子

如何比较Bash中'if'语句中的两个字符串变量?

我正在尝试使用Bash(使用Ubuntu)获得一个if声明:

#!/bin/bash

s1="hi"
s2="hi"

if ["$s1" == "$s2"]
then
  echo match
fi
Run Code Online (Sandbox Code Playgroud)

我尝试了各种形式的if语句,使用[["$s1" == "$s2"]],有和没有引号,使用=,==和-eq,但我仍然得到以下错误:

[hi:命令未找到

我查看了各种网站和教程并复制了这些内容,但是它不起作用 - 我做错了什么?

最后,我想说是否$s1包含$s2,所以我该怎么做?

我刚刚解决了空位...:/我怎么说包含?

我试过了

if [[ "$s1" == "*$s2*" ]]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

bash scripting if-statement

572
推荐指数
11
解决办法
102万
查看次数

匹配所有出现的正则表达式

有没有快速找到Ruby中正则表达式匹配的方法?我查看了Ruby STL中的Regex对象,并在Google上搜索无济于事.

ruby regex

571
推荐指数
4
解决办法
18万
查看次数

出错时自动退出bash shell脚本

我一直在编写一些shell脚本,如果能够在任何命令失败的情况下暂停执行所述shell脚本,我会发现它很有用.请参阅下面的示例:

#!/bin/bash  

cd some_dir  

./configure --some-flags  

make  

make install
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,如果脚本无法更改为指示的目录,那么如果失败,它肯定不会在之后执行./configure.

现在我很清楚我可以对每个命令进行if检查(我认为这是一个无望的解决方案),但是如果其中一个命令失败,是否有全局设置使脚本退出?

error-handling bash shell exit

564
推荐指数
8
解决办法
23万
查看次数

如何测试变量是否是Bash中的数字?

我无法弄清楚如何确保传递给我的脚本的参数是否为数字.

我想做的就是这样:

test *isnumber* $1 && VAR=$1 || echo "need a number"
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

linux bash shell

543
推荐指数
21
解决办法
61万
查看次数

捕获多行输出到Bash变量

我有一个脚本'myscript',输出如下:

abc
def
ghi
Run Code Online (Sandbox Code Playgroud)

在另一个脚本中,我打电话给:

declare RESULT=$(./myscript)
Run Code Online (Sandbox Code Playgroud)

并$RESULT获得价值

abc def ghi
Run Code Online (Sandbox Code Playgroud)

有没有办法用换行符或'\n'字符存储结果,所以我可以输出' echo -e'?

variables bash

542
推荐指数
5
解决办法
26万
查看次数

为什么元字符周围有时需要空格?

几个月前,我在手臂上纹了一个叉形炸弹,我跳过了空白,因为我觉得没有它们看起来更好.但令我沮丧的是,有时(并不总是)当我在shell中运行它时它不会启动一个fork炸弹,但它只是给出了一个语法错误.

bash: syntax error near unexpected token `{:'
Run Code Online (Sandbox Code Playgroud)

昨天它发生在我试图在朋友的Bash shell中运行它,然后我添加了空白,它突然工作,:(){ :|:& };:而不是:(){:|:&};:

空白是否重要; 我的胳膊上有语法错误吗?!

它似乎总是在zsh中工作,但在Bash中不起作用.

一个相关的问题没有解释关于空白的任何事情,这确实是我的问题; 为什么Bash需要的空白能够正确解析它?

syntax bash shell syntax-error

541
推荐指数
5
解决办法
8万
查看次数

如何在bash脚本中添加数字

我有这个bash脚本,我在第16行遇到了问题.如何获取第15行的先前结果并将其添加到第16行的变量中?

#!/bin/bash

num=0
metab=0

for ((i=1; i<=2; i++)); do      
    for j in `ls output-$i-*`; do
        echo "$j"

        metab=$(cat $j|grep EndBuffer|awk '{sum+=$2} END { print sum/120}') (line15)
        num= $num + $metab   (line16)
    done
    echo "$num"
 done
Run Code Online (Sandbox Code Playgroud)

bash mathematical-expressions integer-arithmetic

523
推荐指数
11
解决办法
86万
查看次数

520
推荐指数
10
解决办法
39万
查看次数

如何在bash中等待多个子进程完成并返回退出代码!= 0当任何子进程以代码结束时!= 0?

如何在bash脚本中等待从该脚本生成的几个子进程完成并返回退出代码!= 0当任何子进程以代码结束时!= 0?

简单的脚本:

#!/bin/bash
for i in `seq 0 9`; do
  doCalculations $i &
done
wait
Run Code Online (Sandbox Code Playgroud)

上面的脚本将等待所有10个生成的子进程,但它总是会给出退出状态0(请参阅参考资料help wait).如何修改此脚本,以便它发现生成的子进程的退出状态,并在任何子进程以代码!= 0结束时返回退出代码1?

有没有更好的解决方案,而不是收集子流程的PID,按顺序等待它们并总结退出状态?

bash process wait

518
推荐指数
18
解决办法
48万
查看次数

String.equals与==

此代码将字符串分隔为标记并将它们存储在字符串数组中,然后将变量与第一个主页进行比较...为什么它不起作用?

public static void main(String...aArguments) throws IOException {

    String usuario = "Jorman";
    String password = "14988611";

    String strDatos = "Jorman 14988611";
    StringTokenizer tokens = new StringTokenizer(strDatos, " ");
    int nDatos = tokens.countTokens();
    String[] datos = new String[nDatos];
    int i = 0;

    while (tokens.hasMoreTokens()) {
        String str = tokens.nextToken();
        datos[i] = str;
        i++;
    }

    //System.out.println (usuario);

    if ((datos[0] == usuario)) {
        System.out.println("WORKING");
    }
}
Run Code Online (Sandbox Code Playgroud)

java string

515
推荐指数
16
解决办法
80万
查看次数