由于bash编程,我变得疯狂了
我有以下内容:
result="ERROR|0" # From a complex sed execution
IFS='|' read -a array <<< "$result"
if [ "${array[0]}" == "ERROR" ]; then
echo "Error"
fi
它应该打印错误,但它不会。
任何想法我做错了什么?
编辑:实际上,现在它可以正常工作了,所以我添加了前面的代码,我得到了“结果”字符串
result=$( [some code that gives me an output] \
| grep "Executed" \
| sed s/'\(.*\) Executed \(.*\) of \(.*\) \(.*\) (.*)'/'\4|\3'/ \
)
它应该返回一个字符串,不应该吗?我之前写的字符串
答案 0 :(得分: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
答案 1 :(得分:0)
为变量赋值时,请勿使用$
表示法。
例如使用
result="foo"
而不是
$result="foo"
然后在编写字符串时不要忘记终止引号:
IFS='|' read -a array <<< "$result
错过了"$result
中的终止引用。
一个好的语法荧光笔可以提供很多帮助(只需将问题中的语法高亮与答案中的语法高亮进行比较)