【发布时间】:2010-09-12 13:21:00
【问题描述】:
请解释一下为什么最后的echo 语句是空白的?我希望 XCODE 在 while 循环中增加到 1:
#!/bin/bash
OUTPUT="name1 ip ip status" # normally output of another command with multi line output
if [ -z "$OUTPUT" ]
then
echo "Status WARN: No messages from SMcli"
exit $STATE_WARNING
else
echo "$OUTPUT"|while read NAME IP1 IP2 STATUS
do
if [ "$STATUS" != "Optimal" ]
then
echo "CRIT: $NAME - $STATUS"
echo $((++XCODE))
else
echo "OK: $NAME - $STATUS"
fi
done
fi
echo $XCODE
我尝试使用以下语句而不是 ++XCODE 方法
XCODE=`expr $XCODE + 1`
而且它也不会在 while 语句之外打印。我想我在这里遗漏了一些关于变量范围的东西,但是 ol' 手册页没有向我显示它。
【问题讨论】:
-
你在哪里将 XCODE 初始化为可以递增的东西?
-
我试图在代码的顶部,在 while 语句之外抛出一个“XCODE=0”
-
没有杂物,它对我有用。 #!/bin/bash for i in 1 2 3 4 5; do echo $((++XCODE)) done echo "fin:" $XCODE 我认为您的问题与变量范围无关,而与当时发生的一切有关。
-
同意.. 似乎与“while read”循环有关?
-
有一个关于此的 Bash 常见问题解答:mywiki.wooledge.org/BashFAQ/024