0

由于 bash 编程,我变得疯狂

我有以下内容:

result="ERROR|0"  # From a complex sed execution
IFS='|' read -a array <<< "$result"

if [ "${array[0]}" == "ERROR" ]; then
    echo "Error"
fi

它应该打印Error,但事实并非如此。

任何想法我做错了什么?

编辑:实际上,现在它可以工作了,所以我在得到“结果”字符串的地方添加了前面的代码

result=$( [some code that gives me an output] \
          | grep "Executed" \
          | sed s/'\(.*\) Executed \(.*\) of \(.*\) \(.*\) (.*)'/'\4|\3'/ \
        )

它应该返回一个字符串,不是吗?我之前写的字符串

4

2 回答 2

4

您的代码的第一个版本中有两个小错误:

  • $result="ERROR...(分配,你必须使用result=value
  • <<< "$result(您错过了第二个"收盘价)。

使用此代码,它可以工作:

result="ERROR|0"  # From a complex sed exectution
IFS='|' read -a array <<< "$result"

if [ "${array[0]}" == "ERROR" ]; then
    echo "Error"
fi

实际上,我认为您在宽限期内更新了代码,现在一切正常。

#!/bin/bash在第一行添加并执行:

$ ./script
Error
于 2013-09-05T15:19:51.673 回答
0

给变量赋值时,不要使用$符号。例如使用

 result="foo"

而不是

 $result="foo"

然后在编写字符串时不要忘记终止引号:

IFS='|' read -a array <<< "$result

错过了中的终止报价"$result

一个好的语法高亮可以有很大帮助(只需将问题中的语法高亮与答案中的语法高亮进行比较)

于 2013-09-05T15:23:37.463 回答